Subversion Repositories SmartDukaan

Rev

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

Rev 23898 Rev 23899
Line 1... Line 1...
1
package com.smartdukaan.cron.migrations;
1
package com.smartdukaan.cron.migrations;
2
 
2
 
3
import java.time.LocalDate;
3
import java.time.LocalDate;
4
import java.time.LocalDateTime;
4
import java.time.LocalDateTime;
5
import java.time.LocalTime;
5
import java.time.LocalTime;
6
import java.time.Month;
-
 
7
import java.util.Arrays;
6
import java.util.Arrays;
8
import java.util.Collections;
7
import java.util.Collections;
9
import java.util.List;
8
import java.util.List;
-
 
9
import java.util.Map;
-
 
10
import java.util.stream.Collectors;
10
 
11
 
11
import org.apache.commons.lang.StringUtils;
12
import org.apache.commons.lang.StringUtils;
12
import org.apache.logging.log4j.LogManager;
13
import org.apache.logging.log4j.LogManager;
13
import org.apache.logging.log4j.Logger;
14
import org.apache.logging.log4j.Logger;
14
import org.springframework.beans.factory.annotation.Autowired;
15
import org.springframework.beans.factory.annotation.Autowired;
15
import org.springframework.stereotype.Component;
16
import org.springframework.stereotype.Component;
16
import org.springframework.transaction.annotation.Transactional;
17
import org.springframework.transaction.annotation.Transactional;
17
 
18
 
-
 
19
import com.spice.profitmandi.common.model.CustomRetailer;
-
 
20
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
18
import com.spice.profitmandi.dao.entity.fofo.Purchase;
21
import com.spice.profitmandi.dao.entity.fofo.Purchase;
19
import com.spice.profitmandi.dao.entity.transaction.LineItem;
22
import com.spice.profitmandi.dao.entity.transaction.LineItem;
20
import com.spice.profitmandi.dao.entity.transaction.LineItemImei;
23
import com.spice.profitmandi.dao.entity.transaction.LineItemImei;
21
import com.spice.profitmandi.dao.entity.transaction.Order;
24
import com.spice.profitmandi.dao.entity.transaction.Order;
-
 
25
import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;
22
import com.spice.profitmandi.dao.repository.fofo.PurchaseRepository;
26
import com.spice.profitmandi.dao.repository.fofo.PurchaseRepository;
23
import com.spice.profitmandi.dao.repository.transaction.LineItemImeisRepository;
27
import com.spice.profitmandi.dao.repository.transaction.LineItemImeisRepository;
24
import com.spice.profitmandi.dao.repository.transaction.LineItemRepository;
28
import com.spice.profitmandi.dao.repository.transaction.LineItemRepository;
25
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
29
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
-
 
30
import com.spice.profitmandi.service.inventory.InventoryService;
-
 
31
import com.spice.profitmandi.service.transaction.TransactionService;
-
 
32
import com.spice.profitmandi.service.user.RetailerService;
-
 
33
import com.spice.profitmandi.service.wallet.WalletService;
26
 
34
 
27
@Component
35
@Component
28
@Transactional(rollbackFor = Throwable.class)
36
@Transactional(rollbackFor = Throwable.class)
29
public class RunOnceTasks {
37
public class RunOnceTasks {
30
 
38
 
31
	private static final Logger LOGGER = LogManager.getLogger(RunOnceTasks.class);
39
	private static final Logger LOGGER = LogManager.getLogger(RunOnceTasks.class);
32
 
40
 
33
	@Autowired
41
	@Autowired
34
	private LineItemRepository lineItemRepository;
42
	private LineItemRepository lineItemRepository;
-
 
43
 
-
 
44
	@Autowired
-
 
45
	private WalletService walletService;
35
	
46
 
-
 
47
	@Autowired
-
 
48
	private InventoryService inventoryService;
-
 
49
 
-
 
50
	@Autowired
-
 
51
	private TransactionService transactionService;
-
 
52
 
36
	@Autowired
53
	@Autowired
37
	private OrderRepository orderRepository;
54
	private OrderRepository orderRepository;
38
 
55
 
39
	@Autowired
56
	@Autowired
-
 
57
	private FofoStoreRepository fofoStoreRepository;
-
 
58
 
-
 
59
	@Autowired
40
	private LineItemImeisRepository lineItemImeisRepository;
60
	private LineItemImeisRepository lineItemImeisRepository;
41
	
61
	
42
	@Autowired
62
	@Autowired
-
 
63
	private RetailerService retailerService;
-
 
64
 
-
 
65
	@Autowired
43
	private PurchaseRepository purchaseRepository;
66
	private PurchaseRepository purchaseRepository;
44
 
67
 
45
	
-
 
46
	
-
 
47
	public void populateGrnTimestamp() {
68
	public void populateGrnTimestamp() {
48
		List<Purchase> allPurchases = purchaseRepository.selectAll();
69
		List<Purchase> allPurchases = purchaseRepository.selectAll();
49
		for(Purchase p : allPurchases) {
70
		for (Purchase p : allPurchases) {
50
			String invoiceNumber = p.getPurchaseReference();
71
			String invoiceNumber = p.getPurchaseReference();
51
			if(p.getCompleteTimestamp() == null) {
72
			if (p.getCompleteTimestamp() == null) {
52
				LOGGER.info("GRN for invoice {} is delivered but partially Completed.", p.getPurchaseReference());
73
				LOGGER.info("GRN for invoice {} is delivered but partially Completed.", p.getPurchaseReference());
53
			} else {
74
			} else {
54
				List<Order> orders = orderRepository.selectByAirwayBillOrInvoiceNumber(invoiceNumber, p.getFofoId());
75
				List<Order> orders = orderRepository.selectByAirwayBillOrInvoiceNumber(invoiceNumber, p.getFofoId());
55
				for(Order order : orders) {
76
				for (Order order : orders) {
56
					if(order.getPartnerPurchaseTimestamp() == null) {
77
					if (order.getPartnerPurchaseTimestamp() == null) {
57
						order.setPartnerPurchaseTimestamp(p.getCompleteTimestamp());
78
						order.setPartnerPurchaseTimestamp(p.getCompleteTimestamp());
58
						orderRepository.persist(order);
79
						orderRepository.persist(order);
59
					}
80
					}
60
				}
81
				}
61
			}
82
			}
62
		}
83
		}
63
		
84
 
64
	}
85
	}
65
	
86
 
66
	public void migarateLineItemsToNewTable() {
87
	public void migarateLineItemsToNewTable() {
67
		LOGGER.info("Before Migrated LineItems Successfully");
88
		LOGGER.info("Before Migrated LineItems Successfully");
68
		int lineItemImeiId = 0;
89
		int lineItemImeiId = 0;
69
		LocalDateTime startDate = null;
90
		LocalDateTime startDate = null;
70
		try {
91
		try {
71
			lineItemImeiId = lineItemImeisRepository.selectMaxId();
92
			lineItemImeiId = lineItemImeisRepository.selectMaxId();
-
 
93
			LineItem lineItem = lineItemRepository
72
			LineItem lineItem = lineItemRepository.selectById(lineItemImeisRepository.selectById(lineItemImeiId).getLineItemId());
94
					.selectById(lineItemImeisRepository.selectById(lineItemImeiId).getLineItemId());
73
			Order order = orderRepository.selectById(lineItem.getOrderId());
95
			Order order = orderRepository.selectById(lineItem.getOrderId());
74
			startDate = order.getBillingTimestamp();
96
			startDate = order.getBillingTimestamp();
75
		} catch (Exception e) {
97
		} catch (Exception e) {
76
			LOGGER.info("Running before first time");
98
			LOGGER.info("Running before first time");
77
			startDate = LocalDateTime.of(LocalDate.of(2017, 7, 1), LocalTime.MIDNIGHT);
99
			startDate = LocalDateTime.of(LocalDate.of(2017, 7, 1), LocalTime.MIDNIGHT);
78
		}
100
		}
79
		List<Order> orders = orderRepository.selectAllByBillingDatesBetween(startDate, LocalDateTime.now());
101
		List<Order> orders = orderRepository.selectAllByBillingDatesBetween(startDate, LocalDateTime.now());
80
		Collections.reverse(orders);
102
		Collections.reverse(orders);
81
		
103
 
82
		for (Order order : orders) {
104
		for (Order order : orders) {
83
			try {
105
			try {
84
				String serialNumbers = order.getLineItem().getSerialNumber();
106
				String serialNumbers = order.getLineItem().getSerialNumber();
85
				if (!StringUtils.isEmpty(serialNumbers)) {
107
				if (!StringUtils.isEmpty(serialNumbers)) {
86
					List<String> serialNumberList = Arrays.asList(serialNumbers.split(","));
108
					List<String> serialNumberList = Arrays.asList(serialNumbers.split(","));
Line 93... Line 115...
93
					}
115
					}
94
				} else {
116
				} else {
95
					LOGGER.info("Serial Numbers dont exist for Order {}", order.getId());
117
					LOGGER.info("Serial Numbers dont exist for Order {}", order.getId());
96
				}
118
				}
97
			} catch (Exception e) {
119
			} catch (Exception e) {
98
				LOGGER.info("Error occurred while creating lineitem imei {}, because of {}", order.getId(), e.getMessage());
120
				LOGGER.info("Error occurred while creating lineitem imei {}, because of {}", order.getId(),
-
 
121
						e.getMessage());
99
			}
122
			}
100
		}
123
		}
101
		LOGGER.info("Migrated LineItems Successfully");
124
		LOGGER.info("Migrated LineItems Successfully");
102
	}
125
	}
-
 
126
 
-
 
127
	public void getInvestmentDetails() throws Exception{
-
 
128
		LOGGER.info("StoreName\tEmail\tMobile\tminimumInvestment\twalletAmount\tinStockAmount\tunbilledStockAmount\tgrnPendingStockAmount");
-
 
129
		List<FofoStore> fofoStores = fofoStoreRepository.selectAll();
-
 
130
		Map<Integer,CustomRetailer> customRetailerMap = retailerService.getFofoRetailers(fofoStores.stream().map(x->x.getId()).collect(Collectors.toList()));
-
 
131
		for (FofoStore fofoStore: fofoStores) {
-
 
132
			CustomRetailer retailer = customRetailerMap.get(fofoStore.getId());
-
 
133
			float walletAmount = walletService.getUserWallet(fofoStore.getId()).getAmount();
-
 
134
			float inStockAmount = inventoryService.getTotalAmountInStock(fofoStore.getId());
-
 
135
	
-
 
136
			float unbilledStockAmount = 0;
-
 
137
			List<Order> unbilledOrders = transactionService.getInTransitOrders(fofoStore.getId());
-
 
138
			for(Order unBilledOrder : unbilledOrders) {
-
 
139
				unbilledStockAmount += unBilledOrder.getTotalAmount();
-
 
140
			}
-
 
141
	
-
 
142
			float grnPendingStockAmount = 0;
-
 
143
			List<Order> grnPendingOrders = transactionService.getGrnPendingOrders(fofoStore.getId());
-
 
144
			for(Order grnPendingOrder : grnPendingOrders) {
-
 
145
				grnPendingStockAmount += grnPendingOrder.getTotalAmount();
-
 
146
			}
-
 
147
			try {
-
 
148
			LOGGER.info(String.join("\t", fofoStore.getCode(), retailer.getMobileNumber(), String.valueOf(fofoStore.getMinimumInvestment()), 
-
 
149
					String.valueOf(walletAmount), String.valueOf(inStockAmount), String.valueOf(unbilledStockAmount), String.valueOf(grnPendingStockAmount)));
-
 
150
			} catch(Exception e) {
-
 
151
				continue;
-
 
152
			}
-
 
153
			float totalInvestedAmount = walletAmount + inStockAmount + unbilledStockAmount + grnPendingStockAmount;
-
 
154
			LOGGER.info("Total Amount in System is {}", totalInvestedAmount);
-
 
155
			LOGGER.info("Store minimum investment is {}", fofoStore.getMinimumInvestment());
-
 
156
		}
-
 
157
	
-
 
158
	}
103
}
159
}
104
160