Subversion Repositories SmartDukaan

Rev

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

Rev 31906 Rev 33243
Line 1... Line 1...
1
package com.spice.profitmandi.service.inventory;
1
package com.spice.profitmandi.service.inventory;
2
 
2
 
-
 
3
import com.spice.profitmandi.common.model.ItemIdQuantity;
3
import com.spice.profitmandi.dao.entity.inventory.PartnerAgeingModel;
4
import com.spice.profitmandi.dao.entity.inventory.PartnerAgeingModel;
4
import com.spice.profitmandi.dao.repository.fofo.ActivatedImeiRepository;
5
import com.spice.profitmandi.dao.repository.fofo.ActivatedImeiRepository;
-
 
6
import org.apache.logging.log4j.LogManager;
-
 
7
import org.apache.logging.log4j.Logger;
5
import org.hibernate.Session;
8
import org.hibernate.Session;
6
import org.hibernate.SessionFactory;
9
import org.hibernate.SessionFactory;
7
import org.springframework.beans.factory.annotation.Autowired;
10
import org.springframework.beans.factory.annotation.Autowired;
8
import org.springframework.stereotype.Component;
11
import org.springframework.stereotype.Component;
9
 
12
 
10
import javax.persistence.TypedQuery;
13
import javax.persistence.TypedQuery;
11
import java.util.List;
-
 
12
import java.util.Map;
14
import java.util.*;
13
import java.util.Set;
-
 
14
import java.util.stream.Collectors;
15
import java.util.stream.Collectors;
15
 
16
 
16
 
17
 
17
@Component
18
@Component
18
public class AgeingServiceImpl implements AgeingService {
19
public class AgeingServiceImpl implements AgeingService {
19
 
20
 
20
    @Autowired
21
    @Autowired
21
    ActivatedImeiRepository activatedImeiRepository;
22
    ActivatedImeiRepository activatedImeiRepository;
22
    @Autowired
23
    @Autowired
23
    private SessionFactory sessionFactory;
24
    private SessionFactory sessionFactory;
24
 
-
 
-
 
25
    private static final Logger LOGGER = LogManager.getLogger(AgeingService.class);
25
    @Override
26
    @Override
26
    public Map<String, AgeingModel> getAllAgeingForSecondary() {
27
    public Map<String, AgeingModel> getAllAgeingForSecondary() {
27
        Session session = sessionFactory.getCurrentSession();
28
        Session session = sessionFactory.getCurrentSession();
28
        final TypedQuery<AgeingModel> typedQuerySimilar = session.createNamedQuery("BrandAgeingLimit.imeisToSecondaryAlert", AgeingModel.class);
29
        final TypedQuery<AgeingModel> typedQuerySimilar = session.createNamedQuery("BrandAgeingLimit.imeisToSecondaryAlert", AgeingModel.class);
29
        List<AgeingModel> ageingModels = typedQuerySimilar.getResultList();
30
        List<AgeingModel> ageingModels = typedQuerySimilar.getResultList();
30
        return ageingModels.stream().collect(Collectors.toMap(x -> x.getSerialNumber(), x -> x, (u, v) -> u.getInvoiceDate().isBefore(v.getInvoiceDate()) ? u : v));
31
        return ageingModels.stream().collect(Collectors.toMap(x -> x.getSerialNumber(), x -> x, (u, v) -> u.getInvoiceDate().isBefore(v.getInvoiceDate()) ? u : v));
31
    }
32
    }
32
 
33
 
33
    @Override
34
    @Override
-
 
35
    public Map<String, AgeingModel> getAllAgeingForWarehouseBilling(int vendorWarehouseId, List<Integer> itemIds) {
-
 
36
        Session session = sessionFactory.getCurrentSession();
-
 
37
        final TypedQuery<AgeingModel> typedQuerySimilar = session.createNamedQuery("BrandAgeingLimit.imeisToSecondaryForWarehouseBilling", AgeingModel.class);
-
 
38
        typedQuerySimilar.setParameter("itemIds", itemIds);
-
 
39
        typedQuerySimilar.setParameter("vendorWarehouseId", vendorWarehouseId);
-
 
40
        List<AgeingModel> ageingModels = typedQuerySimilar.getResultList();
-
 
41
        return ageingModels.stream().collect(Collectors.toMap(x -> x.getSerialNumber(), x -> x, (u, v) -> u.getInvoiceDate().isBefore(v.getInvoiceDate()) ? u : v));
-
 
42
    }
-
 
43
 
-
 
44
    @Override
-
 
45
    public Map<Integer, Map<Integer, List<AgeingModel>>> getAgeingForWarehouseBilling(int vendorWarehouseId, List<ItemIdQuantity> itemIdQuantityList) {
-
 
46
        Map<String, AgeingModel> serialNumberAgeingModelMap = this.getAllAgeingForWarehouseBilling(vendorWarehouseId, itemIdQuantityList.stream().map(ItemIdQuantity::getItemId).collect(Collectors.toList()));
-
 
47
 
-
 
48
        Map<Integer, Map<Integer, List<AgeingModel>>> itemAgeingDaysModelMap = serialNumberAgeingModelMap.values().stream()
-
 
49
                .collect(Collectors.groupingBy(AgeingModel::getItemId,
-
 
50
                        Collectors.groupingBy(AgeingModel::getExceedDays, () -> new TreeMap<>(Comparator.reverseOrder()), Collectors.toList())));
-
 
51
 
-
 
52
 
-
 
53
        for (ItemIdQuantity itemIdQuantity : itemIdQuantityList) {
-
 
54
            int count;
-
 
55
            if (!itemAgeingDaysModelMap.isEmpty()) {
-
 
56
                Map<Integer, List<AgeingModel>> daysImeisMap = itemAgeingDaysModelMap.get(itemIdQuantity.getItemId());
-
 
57
                int quantity = itemIdQuantity.getQuantity();
-
 
58
                count = 0;
-
 
59
 
-
 
60
                Iterator<Map.Entry<Integer, List<AgeingModel>>> iter = daysImeisMap.entrySet().iterator();
-
 
61
                while (iter.hasNext()) {
-
 
62
                    Map.Entry<Integer, List<AgeingModel>> entry = iter.next();
-
 
63
                    if (count > quantity) {
-
 
64
                        iter.remove();
-
 
65
                    }
-
 
66
                    count += entry.getValue().size();
-
 
67
                }
-
 
68
            }
-
 
69
 
-
 
70
        }
-
 
71
        return itemAgeingDaysModelMap;
-
 
72
    }
-
 
73
 
-
 
74
 
-
 
75
 
-
 
76
    @Override
34
    public List<PartnerAgeingModel> getAllAgeingForTertiary() {
77
    public List<PartnerAgeingModel> getAllAgeingForTertiary() {
35
        Session session = sessionFactory.getCurrentSession();
78
        Session session = sessionFactory.getCurrentSession();
36
        final TypedQuery<PartnerAgeingModel> imeisToTertiaryQuery = session.createNamedQuery("BrandAgeingLimit.imeisToTertiaryAlert", PartnerAgeingModel.class);
79
        final TypedQuery<PartnerAgeingModel> imeisToTertiaryQuery = session.createNamedQuery("BrandAgeingLimit.imeisToTertiaryAlert", PartnerAgeingModel.class);
37
        return imeisToTertiaryQuery.getResultList();
80
        return imeisToTertiaryQuery.getResultList();
38
    }
81
    }