Rev 24004 | Rev 24641 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
package com.smartdukaan.cron.migrations;import java.time.LocalDate;import java.time.LocalDateTime;import java.time.LocalTime;import java.util.Arrays;import java.util.Collections;import java.util.HashMap;import java.util.HashSet;import java.util.List;import java.util.Map;import org.apache.commons.lang.StringUtils;import org.apache.logging.log4j.LogManager;import org.apache.logging.log4j.Logger;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;import org.springframework.transaction.annotation.Transactional;import com.spice.profitmandi.dao.entity.fofo.InventoryItem;import com.spice.profitmandi.dao.entity.fofo.Purchase;import com.spice.profitmandi.dao.entity.transaction.LineItem;import com.spice.profitmandi.dao.entity.transaction.LineItemImei;import com.spice.profitmandi.dao.entity.transaction.Order;import com.spice.profitmandi.dao.repository.dtr.FofoStoreRepository;import com.spice.profitmandi.dao.repository.fofo.DebitNoteRepository;import com.spice.profitmandi.dao.repository.fofo.InventoryItemRepository;import com.spice.profitmandi.dao.repository.fofo.PurchaseRepository;import com.spice.profitmandi.dao.repository.fofo.SchemeInOutRepository;import com.spice.profitmandi.dao.repository.transaction.LineItemImeisRepository;import com.spice.profitmandi.dao.repository.transaction.LineItemRepository;import com.spice.profitmandi.dao.repository.transaction.OrderRepository;import com.spice.profitmandi.dao.repository.user.UserRepository;import com.spice.profitmandi.service.inventory.InventoryService;import com.spice.profitmandi.service.pricing.PriceDropService;import com.spice.profitmandi.service.scheme.SchemeService;import com.spice.profitmandi.service.transaction.TransactionService;import com.spice.profitmandi.service.user.RetailerService;import com.spice.profitmandi.service.wallet.WalletService;import in.shop2020.model.v1.order.WalletReferenceType;@Component@Transactional(rollbackFor = Throwable.class)public class RunOnceTasks {private static final Logger LOGGER = LogManager.getLogger(RunOnceTasks.class);@Autowiredprivate LineItemRepository lineItemRepository;@Autowiredprivate UserRepository userRepository;@Autowiredprivate WalletService walletService;@Autowiredprivate InventoryService inventoryService;@Autowiredprivate TransactionService transactionService;@Autowiredprivate OrderRepository orderRepository;@Autowiredprivate FofoStoreRepository fofoStoreRepository;@Autowiredprivate LineItemImeisRepository lineItemImeisRepository;@Autowiredprivate InventoryItemRepository inventoryItemRepository;@Autowiredprivate RetailerService retailerService;@Autowiredprivate SchemeInOutRepository schemeInOutRepository;@Autowiredprivate DebitNoteRepository debitNoteRepository;@Autowiredprivate PurchaseRepository purchaseRepository;@Autowiredprivate PriceDropService priceDropService;@Autowiredprivate SchemeService schemeService;public void dropCorrection() throws Exception {walletService.rollbackAmountFromWallet(175128034, 274, 4, WalletReferenceType.PRICE_DROP, "Scheme differential for Price Drop of Rs.712 on Samsung J6 J600GG, on 01-08-2018 for missing 1pc");walletService.rollbackAmountFromWallet(175128034, -259, 4, WalletReferenceType.PRICE_DROP, "Scheme differential for Price Drop of Rs.712 on Samsung J6 J600GG, on 01-08-2018 for missing 1pc");List<InventoryItem> iis = inventoryItemRepository.selectByIds(new HashSet<>(Arrays.asList(3518, 3516)));schemeService.reverseSchemes(iis, 8, "Scheme differential for Price Drop of Rs.712 on Samsung J6 J600GG, on 01-08-2018. Total 2 item(s)");List<InventoryItem> iis1 = inventoryItemRepository.selectByIds(new HashSet<>(Arrays.asList(3502, 3334,3503)));schemeService.reverseSchemes(iis1, 13, "Scheme differential for Price Drop of Rs.485 on Samsung Galaxy J4 J400FD, on 18-07-2018. Total 3 item(s)");List<InventoryItem> iis2 = inventoryItemRepository.selectByIds(new HashSet<>(Arrays.asList(3319)));schemeService.reverseSchemes(iis2, 13, "Scheme differential for Price Drop of Rs.485 on Samsung Galaxy J4 J400FD, on 18-07-2018. Total 1 item(s)");}public void schemeRollback() {Map<Integer, Float> fofoIdAmount = new HashMap<>();fofoIdAmount.put(175135218, 1942f);String description = "Price drop/differential rolled out as, they were already returned, Total 2pcs.";for(Map.Entry<Integer, Float> fofoIdAmountEntry: fofoIdAmount.entrySet()) {Integer fofoId=fofoIdAmountEntry.getKey();Float amount = fofoIdAmountEntry.getValue();walletService.rollbackAmountFromWallet(fofoId, amount, 4, WalletReferenceType.PRICE_DROP, description);}fofoIdAmount.put(175135218, 438f);for(Map.Entry<Integer, Float> fofoIdAmountEntry: fofoIdAmount.entrySet()) {Integer fofoId=fofoIdAmountEntry.getKey();Float amount = fofoIdAmountEntry.getValue();walletService.rollbackAmountFromWallet(fofoId, amount, 4, WalletReferenceType.PRICE_DROP, description);}}public void populateGrnTimestamp() {List<Purchase> allPurchases = purchaseRepository.selectAll();for (Purchase p : allPurchases) {String invoiceNumber = p.getPurchaseReference();if (p.getCompleteTimestamp() == null) {LOGGER.info("GRN for invoice {} is delivered but partially Completed.", p.getPurchaseReference());} else {List<Order> orders = orderRepository.selectByAirwayBillOrInvoiceNumber(invoiceNumber, p.getFofoId());for (Order order : orders) {if (order.getPartnerGrnTimestamp() == null) {order.setPartnerGrnTimestamp(p.getCompleteTimestamp());orderRepository.persist(order);}}}}}public void migarateLineItemsToNewTable() {LOGGER.info("Before Migrated LineItems Successfully");int lineItemImeiId = 0;LocalDateTime startDate = null;try {lineItemImeiId = lineItemImeisRepository.selectMaxId();LineItem lineItem = lineItemRepository.selectById(lineItemImeisRepository.selectById(lineItemImeiId).getLineItemId());Order order = orderRepository.selectById(lineItem.getOrderId());startDate = order.getBillingTimestamp();} catch (Exception e) {LOGGER.info("Running before first time");startDate = LocalDateTime.of(LocalDate.of(2017, 7, 1), LocalTime.MIDNIGHT);}List<Order> orders = orderRepository.selectAllByBillingDatesBetween(startDate, LocalDateTime.now());Collections.reverse(orders);for (Order order : orders) {try {String serialNumbers = order.getLineItem().getSerialNumber();if (!StringUtils.isEmpty(serialNumbers)) {List<String> serialNumberList = Arrays.asList(serialNumbers.split(","));for (String serialNumber : serialNumberList) {int lineItemId = order.getLineItem().getId();LineItemImei lineItemImei = new LineItemImei();lineItemImei.setSerialNumber(serialNumber);lineItemImei.setLineItemId(lineItemId);lineItemImeisRepository.persist(lineItemImei);}} else {LOGGER.info("Serial Numbers dont exist for Order {}", order.getId());}} catch (Exception e) {LOGGER.info("Error occurred while creating lineitem imei {}, because of {}", order.getId(),e.getMessage());}}LOGGER.info("Migrated LineItems Successfully");}}