Subversion Repositories SmartDukaan

Rev

Rev 32795 | Rev 32979 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 32795 Rev 32868
Line 55... Line 55...
55
 
55
 
56
import java.io.IOException;
56
import java.io.IOException;
57
import java.io.InputStream;
57
import java.io.InputStream;
58
import java.time.LocalDate;
58
import java.time.LocalDate;
59
import java.time.LocalDateTime;
59
import java.time.LocalDateTime;
-
 
60
import java.time.Year;
60
import java.time.YearMonth;
61
import java.time.YearMonth;
61
import java.util.*;
62
import java.util.*;
62
import java.util.stream.Collectors;
63
import java.util.stream.Collectors;
63
 
64
 
64
@Component
65
@Component
Line 92... Line 93...
92
 
93
 
93
    @Autowired
94
    @Autowired
94
    private OfferTargetSlabRepository offerTargetSlabRepository;
95
    private OfferTargetSlabRepository offerTargetSlabRepository;
95
 
96
 
96
    @Autowired
97
    @Autowired
97
    CacheManager thirtyMinsTimeOutCacheManager;
98
    CacheManager oneDayCacheManager;
98
 
99
 
99
 
100
 
100
    private static final Logger LOGGER = LogManager.getLogger(OfferServiceImpl.class);
101
    private static final Logger LOGGER = LogManager.getLogger(OfferServiceImpl.class);
101
 
102
 
102
    @Autowired
103
    @Autowired
Line 209... Line 210...
209
        }
210
        }
210
 
211
 
211
    }
212
    }
212
 
213
 
213
    @Override
214
    @Override
214
    @Cacheable(value = "allOffers", cacheManager = "thirtyMinsTimeOutCacheManager")
215
    @Cacheable(value = "allOffers", cacheManager = "oneDayCacheManager")
215
    public Map<Integer, CreateOfferRequest> getAllOffers(YearMonth yearMonth) {
216
    public Map<Integer, CreateOfferRequest> getAllOffers(YearMonth yearMonth) {
216
        List<Offer> allOffers = offerRepository.selectAll(yearMonth, false);
217
        List<Offer> allOffers = offerRepository.selectAll(yearMonth, false);
217
        List<CreateOfferRequest> createOfferRequests = new ArrayList<>();
218
        List<CreateOfferRequest> createOfferRequests = new ArrayList<>();
218
        for (Offer offer : allOffers) {
219
        for (Offer offer : allOffers) {
219
            CreateOfferRequest createOfferRequest = this.getCreateOfferRequest(offer);
220
            CreateOfferRequest createOfferRequest = this.getCreateOfferRequest(offer);
Line 383... Line 384...
383
    }
384
    }
384
 
385
 
385
    @Override
386
    @Override
386
    public void createOffers(InputStream fileInputStream) throws Exception {
387
    public void createOffers(InputStream fileInputStream) throws Exception {
387
        Map<CreateOfferRequest, List<PartnerTargetModel>> offerPartnerTargetMap = this.parseFromExcel(fileInputStream);
388
        Map<CreateOfferRequest, List<PartnerTargetModel>> offerPartnerTargetMap = this.parseFromExcel(fileInputStream);
-
 
389
        Set<YearMonth> ymListToEvict = new HashSet<>();
388
        for (Map.Entry<CreateOfferRequest, List<PartnerTargetModel>> partnerTargetEntry : offerPartnerTargetMap
390
        for (Map.Entry<CreateOfferRequest, List<PartnerTargetModel>> partnerTargetEntry : offerPartnerTargetMap
389
                .entrySet()) {
391
                .entrySet()) {
390
            CreateOfferRequest createOfferRequest = partnerTargetEntry.getKey();
392
            CreateOfferRequest createOfferRequest = partnerTargetEntry.getKey();
391
            Map<List<Integer>, List<Integer>> targetPartnerMap = partnerTargetEntry.getValue().stream()
393
            Map<List<Integer>, List<Integer>> targetPartnerMap = partnerTargetEntry.getValue().stream()
392
                    .collect(Collectors.groupingBy(PartnerTargetModel::getTargets,
394
                    .collect(Collectors.groupingBy(PartnerTargetModel::getTargets,
Line 408... Line 410...
408
                    payoutSlab.setOnwardsAmount(targets.get(counter));
410
                    payoutSlab.setOnwardsAmount(targets.get(counter));
409
                    counter++;
411
                    counter++;
410
                }
412
                }
411
                this.addOfferService(createOfferRequest);
413
                this.addOfferService(createOfferRequest);
412
            }
414
            }
-
 
415
            ymListToEvict.add(YearMonth.from(createOfferRequest.getStartDate()));
-
 
416
        }
-
 
417
        for (YearMonth ymToEvict : ymListToEvict) {
-
 
418
            oneDayCacheManager.getCache("allOffers").evict(ymToEvict);
413
        }
419
        }
414
        thirtyMinsTimeOutCacheManager.getCache("allOffers").evict(YearMonth.now());
-
 
415
 
420
 
416
    }
421
    }
417
 
422
 
418
    private Map<CreateOfferRequest, List<PartnerTargetModel>> parseFromExcel(InputStream inputStream)
423
    private Map<CreateOfferRequest, List<PartnerTargetModel>> parseFromExcel(InputStream inputStream)
419
            throws ProfitMandiBusinessException {
424
            throws ProfitMandiBusinessException {
Line 940... Line 945...
940
                LOGGER.info("Warehosue scans --> {}", warehouseScans);
945
                LOGGER.info("Warehosue scans --> {}", warehouseScans);
941
                List<Integer> warehouseInventoryItemIds = warehouseScans.stream().collect(Collectors.groupingBy(x -> x.getInventoryItemId())).entrySet()
946
                List<Integer> warehouseInventoryItemIds = warehouseScans.stream().collect(Collectors.groupingBy(x -> x.getInventoryItemId())).entrySet()
942
                        .stream().filter(x -> x.getValue().size() == 1).map(x -> x.getKey()).collect(Collectors.toList());
947
                        .stream().filter(x -> x.getValue().size() == 1).map(x -> x.getKey()).collect(Collectors.toList());
943
 
948
 
944
                List<OfferPayout> partnerPayouts = offerPayouts.stream().filter(x -> x.getFofoId() == fofoId).collect(Collectors.toList());
949
                List<OfferPayout> partnerPayouts = offerPayouts.stream().filter(x -> x.getFofoId() == fofoId).collect(Collectors.toList());
945
                Set<String> serialNumbersRejected = partnerPayouts.stream().filter(x->x.getStatus().equals(SchemePayoutStatus.REJECTED)).map(x -> x.getSerialNumber()).collect(Collectors.toSet());
950
                Set<String> serialNumbersRejected = partnerPayouts.stream().filter(x -> x.getStatus().equals(SchemePayoutStatus.REJECTED)).map(x -> x.getSerialNumber()).collect(Collectors.toSet());
946
 
951
 
947
                Set<String> serialNumbers;
952
                Set<String> serialNumbers;
948
                LOGGER.info("warehouseInventoryItemIds {}", warehouseInventoryItemIds);
953
                LOGGER.info("warehouseInventoryItemIds {}", warehouseInventoryItemIds);
949
                if (warehouseInventoryItemIds.size() > 0) {
954
                if (warehouseInventoryItemIds.size() > 0) {
950
                    List<WarehouseInventoryItem> warehouseInventoryItems = warehouseInventoryItemRepository.selectAllByIds(warehouseInventoryItemIds);
955
                    List<WarehouseInventoryItem> warehouseInventoryItems = warehouseInventoryItemRepository.selectAllByIds(warehouseInventoryItemIds);
Line 955... Line 960...
955
                LOGGER.info("SerialNumbers {}", serialNumbers);
960
                LOGGER.info("SerialNumbers {}", serialNumbers);
956
                Map<String, Long> serialNumberCountMap = lineItemImeisRepository.selectByLineItemIds(new ArrayList<>(lineItemMap.keySet()))
961
                Map<String, Long> serialNumberCountMap = lineItemImeisRepository.selectByLineItemIds(new ArrayList<>(lineItemMap.keySet()))
957
                        .stream().collect(Collectors.groupingBy(x -> x.getSerialNumber(), Collectors.counting()));
962
                        .stream().collect(Collectors.groupingBy(x -> x.getSerialNumber(), Collectors.counting()));
958
                LOGGER.info("SerialNumbers Count Map {}", serialNumberCountMap);
963
                LOGGER.info("SerialNumbers Count Map {}", serialNumberCountMap);
959
                Map<String, LineItem> serialNumberMap = lineItemImeisRepository.selectByLineItemIds(new ArrayList<>(lineItemMap.keySet()))
964
                Map<String, LineItem> serialNumberMap = lineItemImeisRepository.selectByLineItemIds(new ArrayList<>(lineItemMap.keySet()))
960
                        .stream().filter(x->!serialNumbersRejected.contains(x.getSerialNumber())).collect(Collectors.toMap(x -> x.getSerialNumber(), x -> lineItemMap.get(x.getLineItemId()), (x1, x2) -> x1.getId() > x2.getId() ? x1 : x2));
965
                        .stream().filter(x -> !serialNumbersRejected.contains(x.getSerialNumber())).collect(Collectors.toMap(x -> x.getSerialNumber(), x -> lineItemMap.get(x.getLineItemId()), (x1, x2) -> x1.getId() > x2.getId() ? x1 : x2));
961
 
966
 
962
 
967
 
963
                serialNumberMap = serialNumberMap.entrySet().stream().filter(x -> serialNumbers.contains(x.getKey())).collect(Collectors.toMap(x -> x.getKey(), x -> x.getValue()));
968
                serialNumberMap = serialNumberMap.entrySet().stream().filter(x -> serialNumbers.contains(x.getKey())).collect(Collectors.toMap(x -> x.getKey(), x -> x.getValue()));
964
                LOGGER.info("serialNumberMap {}", serialNumberMap);
969
                LOGGER.info("serialNumberMap {}", serialNumberMap);
965
                if (serialNumberMap.size() == 0) continue;
970
                if (serialNumberMap.size() == 0) continue;