Subversion Repositories SmartDukaan

Rev

Rev 32817 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 32817 Rev 35424
Line 37... Line 37...
37
 
37
 
38
    @Autowired
38
    @Autowired
39
    WalletService walletService;
39
    WalletService walletService;
40
 
40
 
41
    public void reverseRTO(List<String> invoiceNumbers) throws ProfitMandiBusinessException {
41
    public void reverseRTO(List<String> invoiceNumbers) throws ProfitMandiBusinessException {
-
 
42
        // Fetch with pessimistic lock to prevent concurrent modifications
-
 
43
        List<Order> lockedOrders = orderRepository.selectByInvoiceNumbersForUpdate(invoiceNumbers);
42
        Map<String, List<Order>> invoiceOrderMap = orderRepository.selectByInvoiceNumbers(invoiceNumbers).stream().collect(Collectors.groupingBy(x -> x.getInvoiceNumber()));
44
        Map<String, List<Order>> invoiceOrderMap = lockedOrders.stream().collect(Collectors.groupingBy(x -> x.getInvoiceNumber()));
43
        List<Integer> rtoOrderIds = invoiceOrderMap.values().stream().flatMap(x -> x.stream()).map(x -> x.getId()).collect(Collectors.toList());
45
        List<Integer> rtoOrderIds = lockedOrders.stream().map(x -> x.getId()).collect(Collectors.toList());
-
 
46
 
44
        Map<Integer, List<WarehouseScan>> orderIdWarehouseScanMap = warehouseScanRepository.selectAllByOrderIds(rtoOrderIds).stream().filter(x -> x.getType().equals(ScanType.SALE_RET)).collect(Collectors.groupingBy(x -> x.getOrderId()));
47
        Map<Integer, List<WarehouseScan>> orderIdWarehouseScanMap = warehouseScanRepository.selectAllByOrderIds(rtoOrderIds).stream().filter(x -> x.getType().equals(ScanType.SALE_RET)).collect(Collectors.groupingBy(x -> x.getOrderId()));
45
 
48
 
46
        for (Map.Entry<String, List<Order>> invoiceOrdersEntry : invoiceOrderMap.entrySet()) {
49
        for (Map.Entry<String, List<Order>> invoiceOrdersEntry : invoiceOrderMap.entrySet()) {
47
            String invoiceNumber = invoiceOrdersEntry.getKey();
50
            String invoiceNumber = invoiceOrdersEntry.getKey();
48
            List<Order> orders = invoiceOrdersEntry.getValue();
51
            List<Order> orders = invoiceOrdersEntry.getValue();