| Line 1... |
Line 1... |
| 1 |
package com.smartdukaan.cron.scheduled;
|
1 |
package com.smartdukaan.cron.scheduled;
|
| 2 |
|
2 |
|
| 3 |
import java.io.Serializable;
|
3 |
import java.io.Serializable;
|
| 4 |
import java.time.LocalDate;
|
4 |
import java.time.LocalDate;
|
| - |
|
5 |
import java.time.LocalDateTime;
|
| 5 |
import java.util.ArrayList;
|
6 |
import java.util.ArrayList;
|
| 6 |
import java.util.Arrays;
|
7 |
import java.util.Arrays;
|
| 7 |
import java.util.HashSet;
|
8 |
import java.util.HashSet;
|
| 8 |
import java.util.List;
|
9 |
import java.util.List;
|
| 9 |
import java.util.Map;
|
10 |
import java.util.Map;
|
| Line 57... |
Line 58... |
| 57 |
import in.shop2020.model.v1.order.WalletReferenceType;
|
58 |
import in.shop2020.model.v1.order.WalletReferenceType;
|
| 58 |
|
59 |
|
| 59 |
@Component
|
60 |
@Component
|
| 60 |
@Transactional(rollbackFor = Throwable.class)
|
61 |
@Transactional(rollbackFor = Throwable.class)
|
| 61 |
public class Reconciliation {
|
62 |
public class Reconciliation {
|
| 62 |
|
63 |
|
| 63 |
private static final Logger LOGGER = LogManager.getLogger(Application.class);
|
64 |
private static final Logger LOGGER = LogManager.getLogger(Application.class);
|
| 64 |
|
65 |
|
| 65 |
@Autowired
|
66 |
@Autowired
|
| 66 |
private FofoStoreRepository fofoStoreRepository;
|
67 |
private FofoStoreRepository fofoStoreRepository;
|
| 67 |
|
68 |
|
| 68 |
@Autowired
|
69 |
@Autowired
|
| 69 |
private PurchaseRepository purchaseRepository;
|
70 |
private PurchaseRepository purchaseRepository;
|
| 70 |
|
71 |
|
| 71 |
@Autowired
|
72 |
@Autowired
|
| 72 |
private OrderService orderService;
|
73 |
private OrderService orderService;
|
| 73 |
|
74 |
|
| 74 |
@Autowired
|
75 |
@Autowired
|
| 75 |
private FofoOrderItemRepository fofoOrderItemRepository;
|
76 |
private FofoOrderItemRepository fofoOrderItemRepository;
|
| 76 |
@Autowired
|
77 |
@Autowired
|
| 77 |
private FofoLineItemRepository fofoLineItemRepository;
|
78 |
private FofoLineItemRepository fofoLineItemRepository;
|
| 78 |
@Autowired
|
79 |
@Autowired
|
| Line 225... |
Line 226... |
| 225 |
float schemeInAmountRolledBack = 0;
|
226 |
float schemeInAmountRolledBack = 0;
|
| 226 |
for (int transactionId : transactionsOnThatDate.keySet()) {
|
227 |
for (int transactionId : transactionsOnThatDate.keySet()) {
|
| 227 |
List<InventoryItem> inventoryItems = inventoryRepository.selectByPurchaseId(transactionId).stream()
|
228 |
List<InventoryItem> inventoryItems = inventoryRepository.selectByPurchaseId(transactionId).stream()
|
| 228 |
.filter(x -> x.getSerialNumber() != null).collect(Collectors.toList());
|
229 |
.filter(x -> x.getSerialNumber() != null).collect(Collectors.toList());
|
| 229 |
Set<Integer> inventoryItemIds = inventoryItems.stream().map(x -> x.getId()).collect(Collectors.toSet());
|
230 |
Set<Integer> inventoryItemIds = inventoryItems.stream().map(x -> x.getId()).collect(Collectors.toSet());
|
| 230 |
if(inventoryItemIds.size() == 0) {
|
231 |
if (inventoryItemIds.size() == 0) {
|
| 231 |
continue;
|
232 |
continue;
|
| 232 |
}
|
233 |
}
|
| 233 |
List<SchemeInOut> sios = schemeInOutRepository.selectByInventoryItemIds(new HashSet<>(inventoryItemIds))
|
234 |
List<SchemeInOut> sios = schemeInOutRepository.selectByInventoryItemIds(new HashSet<>(inventoryItemIds))
|
| 234 |
.stream().filter(x -> schemeIds.contains(x.getSchemeId())).collect(Collectors.toList());
|
235 |
.stream().filter(x -> schemeIds.contains(x.getSchemeId())).collect(Collectors.toList());
|
| 235 |
totalSchemeInWalletCredited += transactionsOnThatDate.get(transactionId);
|
236 |
totalSchemeInWalletCredited += transactionsOnThatDate.get(transactionId);
|
| Line 284... |
Line 285... |
| 284 |
|
285 |
|
| 285 |
public void reconcileExpiredFixedSchemes() throws Exception {
|
286 |
public void reconcileExpiredFixedSchemes() throws Exception {
|
| 286 |
List<Scheme> allSchemes = schemeRepository.selectAll();
|
287 |
List<Scheme> allSchemes = schemeRepository.selectAll();
|
| 287 |
// .stream().filter(x ->
|
288 |
// .stream().filter(x ->
|
| 288 |
// x.getAmountType().equals(AmountType.FIXED)).collect(Collectors.toList());
|
289 |
// x.getAmountType().equals(AmountType.FIXED)).collect(Collectors.toList());
|
| - |
|
290 |
allSchemes = allSchemes.stream()
|
| 289 |
allSchemes = allSchemes.stream().filter(x->x.getEndDateTime().isAfter(LocalDate.of(2019, 3, 31).atStartOfDay())).collect(Collectors.toList());
|
291 |
.filter(x -> x.getEndDateTime().isAfter(LocalDate.of(2019, 3, 31).atStartOfDay()))
|
| - |
|
292 |
.collect(Collectors.toList());
|
| - |
|
293 |
System.out.println(
|
| 290 |
System.out.println("InventoryId\tSerialNumber\tItem Id\tScheme Id\tScheme Name\tScheme Type\tAmount Type\tScheme Amount\tAmount Paid\tReference\tTransaction Time\tScheme Start\tScheme End\tScheme Expiry");
|
294 |
"InventoryId\tSerialNumber\tItem Id\tScheme Id\tScheme Name\tScheme Type\tAmount Type\tScheme Amount\tAmount Paid\tReference\tTransaction Time\tScheme Start\tScheme End\tScheme Expiry");
|
| 291 |
for (Scheme scheme : allSchemes) {
|
295 |
for (Scheme scheme : allSchemes) {
|
| 292 |
if (scheme.getExpireTimestamp() != null) {
|
296 |
if (scheme.getExpireTimestamp() != null) {
|
| 293 |
if (scheme.getExpireTimestamp().isBefore(scheme.getEndDateTime())) {
|
297 |
if (scheme.getExpireTimestamp().isBefore(scheme.getEndDateTime())) {
|
| 294 |
List<SchemeInOut> inOuts = schemeInOutRepository
|
- |
|
| 295 |
.selectBySchemeIds(Sets.newHashSet(scheme.getId()));
|
298 |
List<SchemeInOut> inOuts = schemeInOutRepository.selectBySchemeIds(Sets.newHashSet(scheme.getId()));
|
| 296 |
if (scheme.getType().equals(SchemeType.IN)) {
|
299 |
if (scheme.getType().equals(SchemeType.IN)) {
|
| 297 |
for (SchemeInOut schemeInOut : inOuts) {
|
300 |
for (SchemeInOut schemeInOut : inOuts) {
|
| 298 |
ScanRecord inRecord = scanRecordRepository
|
301 |
ScanRecord inRecord = scanRecordRepository
|
| 299 |
.selectByInventoryItemId(schemeInOut.getInventoryItemId()).stream()
|
302 |
.selectByInventoryItemId(schemeInOut.getInventoryItemId()).stream()
|
| 300 |
.filter(x -> x.getType().equals(ScanType.PURCHASE)).collect(Collectors.toList())
|
303 |
.filter(x -> x.getType().equals(ScanType.PURCHASE)).collect(Collectors.toList())
|
| 301 |
.get(0);
|
304 |
.get(0);
|
| 302 |
if (inRecord.getCreateTimestamp().isAfter(scheme.getExpireTimestamp())) {
|
305 |
if (inRecord.getCreateTimestamp().isAfter(scheme.getExpireTimestamp())) {
|
| 303 |
InventoryItem ii = inventoryItemRepository.selectById(inRecord.getInventoryItemId());
|
306 |
InventoryItem ii = inventoryItemRepository.selectById(inRecord.getInventoryItemId());
|
| 304 |
Purchase purchase = purchaseRepository.selectByIdAndFofoId(ii.getPurchaseId(), ii.getFofoId());
|
307 |
Purchase purchase = purchaseRepository.selectByIdAndFofoId(ii.getPurchaseId(),
|
| - |
|
308 |
ii.getFofoId());
|
| 305 |
System.out.println(String.format("%d\t%s\t%d\t%d\t%s\t%s\t%f\t%f\t%d\t%s\t%s\t%s\t%s",
|
309 |
System.out.println(String.format("%d\t%s\t%d\t%d\t%s\t%s\t%f\t%f\t%d\t%s\t%s\t%s\t%s",
|
| 306 |
ii.getId(), ii.getSerialNumber(), ii.getItemId(), schemeInOut.getSchemeId(), scheme.getName(), scheme.getType(),
|
310 |
ii.getId(), ii.getSerialNumber(), ii.getItemId(), schemeInOut.getSchemeId(),
|
| - |
|
311 |
scheme.getName(), scheme.getType(), scheme.getAmount(), schemeInOut.getAmount(),
|
| 307 |
scheme.getAmount(), schemeInOut.getAmount(), purchase.getId(), inRecord.getCreateTimestamp(), scheme.getStartDateTime(), scheme.getEndDateTime(), scheme.getExpireTimestamp()));
|
312 |
purchase.getId(), inRecord.getCreateTimestamp(), scheme.getStartDateTime(),
|
| - |
|
313 |
scheme.getEndDateTime(), scheme.getExpireTimestamp()));
|
| 308 |
}
|
314 |
}
|
| 309 |
|
315 |
|
| 310 |
}
|
316 |
}
|
| 311 |
}
|
317 |
}
|
| 312 |
if (scheme.getType().equals(SchemeType.OUT)) {
|
318 |
if (scheme.getType().equals(SchemeType.OUT)) {
|
| 313 |
for (SchemeInOut schemeInOut : inOuts) {
|
319 |
for (SchemeInOut schemeInOut : inOuts) {
|
| 314 |
ScanRecord outRecord = scanRecordRepository
|
320 |
ScanRecord outRecord = scanRecordRepository
|
| 315 |
.selectByInventoryItemId(schemeInOut.getInventoryItemId()).stream()
|
321 |
.selectByInventoryItemId(schemeInOut.getInventoryItemId()).stream()
|
| - |
|
322 |
.filter(x -> x.getType().equals(ScanType.SALE))
|
| 316 |
.filter(x -> x.getType().equals(ScanType.SALE)).sorted((x1,x2)->x1.getId() - x2.getId()).collect(Collectors.toList()).get(0);
|
323 |
.sorted((x1, x2) -> x1.getId() - x2.getId()).collect(Collectors.toList()).get(0);
|
| 317 |
if (outRecord.getCreateTimestamp().isAfter(scheme.getExpireTimestamp())) {
|
324 |
if (outRecord.getCreateTimestamp().isAfter(scheme.getExpireTimestamp())) {
|
| 318 |
InventoryItem ii = inventoryItemRepository.selectById(outRecord.getInventoryItemId());
|
325 |
InventoryItem ii = inventoryItemRepository.selectById(outRecord.getInventoryItemId());
|
| 319 |
FofoOrder fofoOrder;
|
326 |
FofoOrder fofoOrder;
|
| 320 |
if(outRecord.getOrderId()==0) {
|
327 |
if (outRecord.getOrderId() == 0) {
|
| 321 |
fofoOrder = orderService.getOrderByInventoryItemId(ii.getId());
|
328 |
fofoOrder = orderService.getOrderByInventoryItemId(ii.getId());
|
| 322 |
} else {
|
329 |
} else {
|
| 323 |
fofoOrder = fofoOrderRepository.selectByOrderId(outRecord.getOrderId());
|
330 |
fofoOrder = fofoOrderRepository.selectByOrderId(outRecord.getOrderId());
|
| 324 |
if(fofoOrder==null) {
|
331 |
if (fofoOrder == null) {
|
| 325 |
LOGGER.info("Order id does not exits - {}", outRecord.getOrderId());
|
332 |
LOGGER.info("Order id does not exits - {}", outRecord.getOrderId());
|
| 326 |
continue;
|
333 |
continue;
|
| 327 |
}
|
334 |
}
|
| 328 |
}
|
335 |
}
|
| 329 |
System.out.println(String.format("%d\t%s\t%d\t%d\t%s\t%s\t%f\t%f\t%d\t%s\t%s\t%s\t%s",
|
336 |
System.out.println(String.format("%d\t%s\t%d\t%d\t%s\t%s\t%f\t%f\t%d\t%s\t%s\t%s\t%s",
|
| 330 |
ii.getId(), ii.getSerialNumber(), ii.getItemId(), schemeInOut.getSchemeId(), scheme.getName(), scheme.getType(),
|
337 |
ii.getId(), ii.getSerialNumber(), ii.getItemId(), schemeInOut.getSchemeId(),
|
| - |
|
338 |
scheme.getName(), scheme.getType(), scheme.getAmount(), schemeInOut.getAmount(),
|
| 331 |
scheme.getAmount(), schemeInOut.getAmount(), fofoOrder.getId(), outRecord.getCreateTimestamp(), scheme.getStartDateTime(), scheme.getEndDateTime(), scheme.getExpireTimestamp()));
|
339 |
fofoOrder.getId(), outRecord.getCreateTimestamp(), scheme.getStartDateTime(),
|
| - |
|
340 |
scheme.getEndDateTime(), scheme.getExpireTimestamp()));
|
| 332 |
|
341 |
|
| 333 |
}
|
342 |
}
|
| 334 |
|
343 |
|
| 335 |
}
|
344 |
}
|
| 336 |
}
|
345 |
}
|
| 337 |
}
|
346 |
}
|
| 338 |
}
|
347 |
}
|
| 339 |
}
|
348 |
}
|
| 340 |
|
349 |
|
| 341 |
}
|
350 |
}
|
| - |
|
351 |
|
| - |
|
352 |
private void checkForDblClickIssues() {
|
| - |
|
353 |
// For all schmes from April onwards
|
| - |
|
354 |
}
|
| - |
|
355 |
|
| - |
|
356 |
private void dbClickPurchase() {
|
| - |
|
357 |
List<Purchase> purchases = purchaseRepository.selectAllBetweenPurchaseDate(LocalDate.of(2019, 4, 1).atStartOfDay(),
|
| - |
|
358 |
LocalDateTime.now());
|
| - |
|
359 |
}
|
| - |
|
360 |
|
| - |
|
361 |
private void dbClickSale() {
|
| - |
|
362 |
List<FofoOrder> sales = fofoOrderRepository.selectBetweenSaleDate(LocalDate.of(2019, 4, 1).atStartOfDay(),
|
| - |
|
363 |
LocalDateTime.now());
|
| - |
|
364 |
|
| - |
|
365 |
}
|
| 342 |
}
|
366 |
}
|