Subversion Repositories SmartDukaan

Rev

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

Rev 24580 Rev 24587
Line 63... Line 63...
63
import com.spice.profitmandi.dao.entity.fofo.Purchase;
63
import com.spice.profitmandi.dao.entity.fofo.Purchase;
64
import com.spice.profitmandi.dao.entity.fofo.SaleHeadDetails;
64
import com.spice.profitmandi.dao.entity.fofo.SaleHeadDetails;
65
import com.spice.profitmandi.dao.entity.fofo.ScanRecord;
65
import com.spice.profitmandi.dao.entity.fofo.ScanRecord;
66
import com.spice.profitmandi.dao.entity.fofo.SchemeInOut;
66
import com.spice.profitmandi.dao.entity.fofo.SchemeInOut;
67
import com.spice.profitmandi.dao.entity.transaction.PriceDrop;
67
import com.spice.profitmandi.dao.entity.transaction.PriceDrop;
-
 
68
import com.spice.profitmandi.dao.entity.transaction.UserWallet;
68
import com.spice.profitmandi.dao.entity.transaction.UserWalletHistory;
69
import com.spice.profitmandi.dao.entity.transaction.UserWalletHistory;
69
import com.spice.profitmandi.dao.entity.user.Address;
70
import com.spice.profitmandi.dao.entity.user.Address;
70
import com.spice.profitmandi.dao.enumuration.catalog.SchemeType;
71
import com.spice.profitmandi.dao.enumuration.catalog.SchemeType;
71
import com.spice.profitmandi.dao.enumuration.fofo.ScanType;
72
import com.spice.profitmandi.dao.enumuration.fofo.ScanType;
72
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
73
import com.spice.profitmandi.dao.repository.auth.AuthRepository;
Line 90... Line 91...
90
import com.spice.profitmandi.dao.repository.fofo.ScanRecordRepository;
91
import com.spice.profitmandi.dao.repository.fofo.ScanRecordRepository;
91
import com.spice.profitmandi.dao.repository.fofo.SchemeInOutRepository;
92
import com.spice.profitmandi.dao.repository.fofo.SchemeInOutRepository;
92
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
93
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
93
import com.spice.profitmandi.dao.repository.transaction.PriceDropRepository;
94
import com.spice.profitmandi.dao.repository.transaction.PriceDropRepository;
94
import com.spice.profitmandi.dao.repository.transaction.UserWalletHistoryRepository;
95
import com.spice.profitmandi.dao.repository.transaction.UserWalletHistoryRepository;
-
 
96
import com.spice.profitmandi.dao.repository.transaction.UserWalletRepository;
95
import com.spice.profitmandi.dao.repository.user.AddressRepository;
97
import com.spice.profitmandi.dao.repository.user.AddressRepository;
96
import com.spice.profitmandi.service.PartnerInvestmentService;
98
import com.spice.profitmandi.service.PartnerInvestmentService;
97
import com.spice.profitmandi.service.inventory.InventoryService;
99
import com.spice.profitmandi.service.inventory.InventoryService;
98
import com.spice.profitmandi.service.order.OrderService;
100
import com.spice.profitmandi.service.order.OrderService;
99
import com.spice.profitmandi.service.pricing.PriceDropService;
101
import com.spice.profitmandi.service.pricing.PriceDropService;
Line 182... Line 184...
182
	@Autowired
184
	@Autowired
183
	private RechargeProviderCreditWalletHistoryRepository rechargeProviderCreditWalletHistoryRepository;
185
	private RechargeProviderCreditWalletHistoryRepository rechargeProviderCreditWalletHistoryRepository;
184
 
186
 
185
	@Autowired
187
	@Autowired
186
	private FofoOrderRepository fofoOrderRepository;
188
	private FofoOrderRepository fofoOrderRepository;
187
	
189
 
188
	@Autowired
190
	@Autowired
189
	private UserWalletHistoryRepository userWalletHistoryRepository;
191
	private UserWalletHistoryRepository userWalletHistoryRepository;
190
 
192
 
191
	@Autowired
193
	@Autowired
-
 
194
	private UserWalletRepository userWalletRepository;
-
 
195
 
-
 
196
	@Autowired
192
	private InventoryItemRepository inventoryItemRepository;
197
	private InventoryItemRepository inventoryItemRepository;
193
 
198
 
194
	@Autowired
199
	@Autowired
195
	private WalletService walletService;
200
	private WalletService walletService;
196
 
201
 
Line 483... Line 488...
483
	}
488
	}
484
 
489
 
485
	public void processScheme(LocalDateTime startDate, LocalDateTime endDate) throws Exception {
490
	public void processScheme(LocalDateTime startDate, LocalDateTime endDate) throws Exception {
486
		LOGGER.info("Started execution at {}", LocalDateTime.now());
491
		LOGGER.info("Started execution at {}", LocalDateTime.now());
487
		try {
492
		try {
488
		List<Purchase> purchases = purchaseRepository.selectAllBetweenPurchaseDate(startDate, endDate);
493
			List<Purchase> purchases = purchaseRepository.selectAllBetweenPurchaseDate(startDate, endDate);
489
		for (Purchase purchase : purchases) {
494
			for (Purchase purchase : purchases) {
490
			schemeService.processSchemeIn(purchase.getId(), purchase.getFofoId());
495
				schemeService.processSchemeIn(purchase.getId(), purchase.getFofoId());
491
		}
496
			}
492
 
497
 
493
		List<FofoOrder> fofoOrders = fofoOrderRepository.selectBetweenSaleDate(startDate, endDate);
498
			List<FofoOrder> fofoOrders = fofoOrderRepository.selectBetweenSaleDate(startDate, endDate);
494
		for (FofoOrder fofoOrder : fofoOrders) {
499
			for (FofoOrder fofoOrder : fofoOrders) {
495
			schemeService.processSchemeOut(fofoOrder.getId(), fofoOrder.getFofoId());
500
				schemeService.processSchemeOut(fofoOrder.getId(), fofoOrder.getFofoId());
496
		}
501
			}
497
		}catch(Exception e) {
502
		} catch (Exception e) {
498
			e.printStackTrace();
503
			e.printStackTrace();
499
			throw e;
504
			throw e;
500
		}
505
		}
501
		LOGGER.info("Schemes process successfully.");
506
		LOGGER.info("Schemes process successfully.");
502
	}
507
	}
Line 799... Line 804...
799
 
804
 
800
	}
805
	}
801
 
806
 
802
	public void schemewalletmismatch() {
807
	public void schemewalletmismatch() {
803
		LocalDate dateToReconcile = LocalDate.of(2018, 4, 1);
808
		LocalDate dateToReconcile = LocalDate.of(2018, 4, 1);
804
		while(dateToReconcile.isBefore(LocalDate.now())) {
809
		while (dateToReconcile.isBefore(LocalDate.now())) {
805
			reconcileSchemes(dateToReconcile);
810
			reconcileSchemes(dateToReconcile);
806
			//reconcileOrders(dateTime);
811
			// reconcileOrders(dateTime);
807
			//reconcileRecharges(dateTime);
812
			// reconcileRecharges(dateTime);
808
			dateToReconcile = dateToReconcile.plusDays(1);
813
			dateToReconcile = dateToReconcile.plusDays(1);
809
		}
814
		}
810
	}
815
	}
811
 
816
 
812
	private void reconcileSchemes(LocalDate date) {
817
	private void reconcileSchemes(LocalDate date) {
813
		LocalDateTime startDate = date.atStartOfDay();
818
		LocalDateTime startDate = date.atStartOfDay();
814
		LocalDateTime endDate = startDate.plusDays(1);
819
		LocalDateTime endDate = startDate.plusDays(1);
815
		List<SchemeInOut> siosCreated = schemeInOutRepository.selectAllByCreateDate(startDate, endDate);
820
		List<SchemeInOut> siosCreated = schemeInOutRepository.selectAllByCreateDate(startDate, endDate);
816
		List<SchemeInOut> siosRefunded = schemeInOutRepository.selectAllByRefundDate(startDate, endDate);
821
		List<SchemeInOut> siosRefunded = schemeInOutRepository.selectAllByRefundDate(startDate, endDate);
817
		double totalSchemeDisbursed = siosCreated.stream().mapToDouble(x->x.getAmount()).sum();
822
		double totalSchemeDisbursed = siosCreated.stream().mapToDouble(x -> x.getAmount()).sum();
818
		double totalSchemeRolledback = siosRefunded.stream().mapToDouble(x->x.getAmount()).sum();
823
		double totalSchemeRolledback = siosRefunded.stream().mapToDouble(x -> x.getAmount()).sum();
819
		double netSchemeDisbursed = totalSchemeDisbursed - totalSchemeRolledback;
824
		double netSchemeDisbursed = totalSchemeDisbursed - totalSchemeRolledback;
820
		List<WalletReferenceType> walletReferenceTypes = Arrays.asList(WalletReferenceType.SCHEME_IN, WalletReferenceType.SCHEME_OUT);
825
		List<WalletReferenceType> walletReferenceTypes = Arrays.asList(WalletReferenceType.SCHEME_IN,
-
 
826
				WalletReferenceType.SCHEME_OUT);
821
		List<UserWalletHistory> history = userWalletHistoryRepository.selectAllByDateType(startDate, endDate, walletReferenceTypes);
827
		List<UserWalletHistory> history = userWalletHistoryRepository.selectAllByDateType(startDate, endDate,
-
 
828
				walletReferenceTypes);
822
		double schemeAmountWalletTotal = history.stream().mapToDouble(x->x.getAmount()).sum();
829
		double schemeAmountWalletTotal = history.stream().mapToDouble(x -> x.getAmount()).sum();
823
		if(Math.abs(netSchemeDisbursed-schemeAmountWalletTotal) > 10d) {
830
		if (Math.abs(netSchemeDisbursed - schemeAmountWalletTotal) > 10d) {
824
			LOGGER.info("Scheme Amount mismatched for Date {}", date);
831
			LOGGER.info("Scheme Amount mismatched for Date {}", date);
825
		}
-
 
826
		
-
 
827
		
-
 
828
	}
-
 
829
 
832
 
-
 
833
			Map<Integer, Double> inventoryItemSchemeIO = siosCreated.stream().collect(Collectors
-
 
834
					.groupingBy(x -> x.getInventoryItemId(), Collectors.summingDouble(SchemeInOut::getAmount)));
-
 
835
 
-
 
836
			Map<Integer, Double> userSchemeMap = inventoryItemRepository.selectByIds(inventoryItemSchemeIO.keySet())
-
 
837
					.stream().collect(Collectors.groupingBy(x -> x.getFofoId(),
-
 
838
							Collectors.summingDouble(x -> inventoryItemSchemeIO.get(x.getId()))));
-
 
839
 
-
 
840
			Map<Integer, Double> inventoryItemSchemeIORefunded = siosRefunded.stream().collect(Collectors
-
 
841
					.groupingBy(x -> x.getInventoryItemId(), Collectors.summingDouble(SchemeInOut::getAmount)));
-
 
842
 
-
 
843
			Map<Integer, Double> userSchemeRefundedMap = inventoryItemRepository
-
 
844
					.selectByIds(inventoryItemSchemeIORefunded.keySet()).stream()
-
 
845
					.collect(Collectors.groupingBy(x -> x.getFofoId(),
-
 
846
							Collectors.summingDouble(x -> inventoryItemSchemeIORefunded.get(x.getId()))));
-
 
847
 
-
 
848
			Map<Integer, Double> finalUserSchemeAmountMap = new HashMap<>();
-
 
849
			for (Map.Entry<Integer, Double> schemeAmount : userSchemeMap.entrySet()) {
830
	/*
850
			}
-
 
851
			for (Map.Entry<Integer, Double> schemeAmount : userSchemeRefundedMap.entrySet()) {
831
	 * public void processSchemeForModel(String string) { pricingService
852
				if (!finalUserSchemeAmountMap.containsKey(schemeAmount.getKey())) {
-
 
853
					finalUserSchemeAmountMap.put(schemeAmount.getKey(), schemeAmount.getValue());
-
 
854
				} else {
-
 
855
					finalUserSchemeAmountMap.put(schemeAmount.getKey(),
-
 
856
							finalUserSchemeAmountMap.get(schemeAmount.getKey()) + schemeAmount.getValue());
-
 
857
				}
832
	 * 
858
			}
-
 
859
			Map<Integer, Integer> userWalletMap = userWalletRepository.selectByRetailerIds(finalUserSchemeAmountMap.keySet())
-
 
860
					.stream().collect(Collectors.toMap(UserWallet::getUserId, UserWallet::getId));
-
 
861
			
-
 
862
			Map<Integer, Double> walletAmountMap = history.stream().collect(Collectors.groupingBy(
-
 
863
					UserWalletHistory::getWalletId, Collectors.summingDouble((UserWalletHistory::getAmount))));
-
 
864
			for (Map.Entry<Integer, Double> userAmount : walletAmountMap.entrySet()) {
-
 
865
				double diff = Math.abs(finalUserSchemeAmountMap.get(userAmount.getKey()) - userAmount.getValue());
-
 
866
				if (diff > 5) {
-
 
867
					LOGGER.info("Partner scheme mismatched for Userid {}", userWalletMap.get(userAmount.getKey()));
833
	 * }
868
				}
834
	 */
869
			}
-
 
870
		}
835
 
871
 
-
 
872
	}
836
}
873
}
-
 
874
 
-
 
875
/*
-
 
876
 * public void processSchemeForModel(String string) { pricingService
-
 
877
 * 
-
 
878
 * }
-
 
879
 */