Subversion Repositories SmartDukaan

Rev

Rev 34443 | Rev 34492 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
34443 vikas.jang 1
package com.spice.profitmandi.dao.service;
2
 
3
import com.spice.profitmandi.common.model.BulkOrderModel;
4
import com.spice.profitmandi.common.model.ProfitMandiConstants;
5
import com.spice.profitmandi.dao.cart.CartService;
6
import com.spice.profitmandi.dao.entity.catalog.Bid;
7
import com.spice.profitmandi.dao.entity.catalog.Item;
8
import com.spice.profitmandi.dao.entity.catalog.Liquidation;
9
import com.spice.profitmandi.dao.entity.inventory.SaholicCISTable;
10
import com.spice.profitmandi.dao.model.CartItem;
11
import com.spice.profitmandi.dao.model.UserCart;
12
import com.spice.profitmandi.dao.repository.catalog.BidRepository;
13
import com.spice.profitmandi.dao.repository.catalog.ItemRepository;
14
import com.spice.profitmandi.dao.repository.catalog.LiquidationRepository;
15
import com.spice.profitmandi.dao.repository.dtr.UserAccountRepository;
16
import com.spice.profitmandi.dao.repository.inventory.SaholicCISTableRepository;
17
import com.spice.profitmandi.service.order.BulkOrderService;
18
import com.spice.profitmandi.service.transaction.TransactionService;
19
import com.spice.profitmandi.service.wallet.CommonPaymentService;
20
import com.spice.profitmandi.service.wallet.WalletService;
21
import org.apache.logging.log4j.LogManager;
22
import org.apache.logging.log4j.Logger;
23
import org.springframework.beans.factory.annotation.Autowired;
24
import org.springframework.stereotype.Component;
25
 
26
import java.time.LocalDateTime;
27
import java.util.ArrayList;
28
import java.util.Arrays;
29
import java.util.List;
30
 
31
@Component
32
public class LiquidationService {
33
    private static final Logger LOGGER = LogManager.getLogger(LiquidationService.class);
34
 
35
    @Autowired
36
    BidRepository bidRepository;
37
 
38
    @Autowired
39
    LiquidationRepository liquidationRepository;
40
 
41
    @Autowired
42
    private ItemRepository itemRepository;
43
 
44
    @Autowired
34468 vikas.jang 45
    private BidService bidService;
34443 vikas.jang 46
 
47
    @Autowired
48
    SaholicCISTableRepository saholicCISTableRepository;
49
 
50
    @Autowired
51
    WalletService walletService;
52
 
53
    @Autowired
54
    private BulkOrderService bulkOrderService;
55
 
56
    public void processBids(ProfitMandiConstants.BID_CRON_ENUM type) throws Exception {
57
        List<Liquidation> liquidations;
58
        if (type.equals(ProfitMandiConstants.BID_CRON_ENUM.YESTERDAY)){
59
            liquidations = liquidationRepository.selectAllByEndDate(LocalDateTime.now().minusDays(1));
60
        } else {
61
            liquidations = liquidationRepository.selectAllByEndDate(LocalDateTime.now());
62
        }
63
        LOGGER.info("liquidations: {}",liquidations);
64
 
65
        if (liquidations.size() > 0) {
66
            for (Liquidation liquidation : liquidations) {
67
                List<Item> items = itemRepository.selectAllByCatalogItemId(liquidation.getCatalogId());
68
                if (items.size() > 0) {
69
                    long remainingQty = 0;
70
                    for (Item item : items) {
71
                        List<SaholicCISTable> saholicCISTable = saholicCISTableRepository.selectAllByItemId(item.getId());
34468 vikas.jang 72
                        remainingQty += saholicCISTable.stream().mapToInt(SaholicCISTable::getAvailability).sum();
34443 vikas.jang 73
                    }
74
                    List<Bid> bids = bidRepository.selectAllBidByLiquidationIdAndStatus(liquidation.getId(), Arrays.asList(ProfitMandiConstants.BID_ENUM.PENDING, ProfitMandiConstants.BID_ENUM.PROCESSING));
75
 
76
                    for (Bid bid : bids) {
77
                        if (remainingQty >= bid.getQuantity()) {
78
                            List<BulkOrderModel> bulkOrderModels = new ArrayList<>();
79
                            BulkOrderModel bulkOrderModel = new BulkOrderModel();
34468 vikas.jang 80
                            bulkOrderModel.setRowIndex(bid.getId());
34443 vikas.jang 81
                            bulkOrderModel.setFofoId(bid.getFofoId());
82
                            bulkOrderModel.setItemId(items.get(0).getId());
83
                            bulkOrderModel.setQuantity(bid.getQuantity());
84
                            bulkOrderModel.setDescription(items.get(0).getItemDescription());
85
                            bulkOrderModel.setItemPrice(bid.getBiddingAmount());
86
 
87
                            bulkOrderModels.add(bulkOrderModel);
88
 
34468 vikas.jang 89
                            bulkOrderService.generatePurchaseOrder(bulkOrderModels, bid.getFofoId(), ProfitMandiConstants.PO_TYPE.AUTO, type);
34443 vikas.jang 90
                            remainingQty -= bid.getQuantity();
34468 vikas.jang 91
                        } else {
92
                            bidService.cancelYesterdayProcessBid(bid.getId());
34443 vikas.jang 93
                        }
94
                    }
95
                    liquidation.setQuantity((int) remainingQty);
96
                    liquidation.setStatus(ProfitMandiConstants.LIQUIDATION_ENUM.CLOSED);
97
                }
98
            }
99
        }
100
    }
101
}