Subversion Repositories SmartDukaan

Rev

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

Rev 32979 Rev 33030
Line 1... Line 1...
1
package com.spice.profitmandi.service.offers;
1
package com.spice.profitmandi.service.offers;
2
 
2
 
3
import com.google.common.collect.Lists;
3
import com.google.common.collect.Lists;
4
import com.google.gson.Gson;
4
import com.google.gson.Gson;
5
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
5
import com.spice.profitmandi.common.exception.ProfitMandiBusinessException;
-
 
6
import com.spice.profitmandi.common.model.CustomRetailer;
6
import com.spice.profitmandi.common.model.PartnerTargetModel;
7
import com.spice.profitmandi.common.model.PartnerTargetModel;
7
import com.spice.profitmandi.common.model.ProfitMandiConstants;
8
import com.spice.profitmandi.common.model.ProfitMandiConstants;
8
import com.spice.profitmandi.common.util.Utils;
9
import com.spice.profitmandi.common.util.Utils;
9
import com.spice.profitmandi.dao.entity.catalog.ItemCriteria;
10
import com.spice.profitmandi.dao.entity.catalog.ItemCriteria;
10
import com.spice.profitmandi.dao.entity.catalog.Offer;
11
import com.spice.profitmandi.dao.entity.catalog.Offer;
Line 55... Line 56...
55
 
56
 
56
import java.io.IOException;
57
import java.io.IOException;
57
import java.io.InputStream;
58
import java.io.InputStream;
58
import java.time.LocalDate;
59
import java.time.LocalDate;
59
import java.time.LocalDateTime;
60
import java.time.LocalDateTime;
60
import java.time.Year;
-
 
61
import java.time.YearMonth;
61
import java.time.YearMonth;
62
import java.util.*;
62
import java.util.*;
63
import java.util.stream.Collectors;
63
import java.util.stream.Collectors;
64
 
64
 
65
@Component
65
@Component
Line 262... Line 262...
262
        createOfferRequest.setItemCriteriaString(
262
        createOfferRequest.setItemCriteriaString(
263
                itemCriteriaRepository.getItemCriteriaDescription(createOfferRequest.getItemCriteria()));
263
                itemCriteriaRepository.getItemCriteriaDescription(createOfferRequest.getItemCriteria()));
264
        List<com.spice.profitmandi.dao.model.TargetSlab> targetSlabs = offerTargetSlabRepository
264
        List<com.spice.profitmandi.dao.model.TargetSlab> targetSlabs = offerTargetSlabRepository
265
                .getByOfferId(fromOffer.getId());
265
                .getByOfferId(fromOffer.getId());
266
        createOfferRequest.setPartnerCriteriaString(
266
        createOfferRequest.setPartnerCriteriaString(
267
                retailerService.getPartnerCriteriaString(createOfferRequest.getPartnerCriteria()));
267
                this.getPartnerCriteriaString(createOfferRequest.getPartnerCriteria()));
268
        createOfferRequest.setTargetSlabs(targetSlabs);
268
        createOfferRequest.setTargetSlabs(targetSlabs);
269
        for (com.spice.profitmandi.dao.model.ItemCriteriaPayout itemCriteriaPayout : createOfferRequest.getTargetSlabs()
269
        for (com.spice.profitmandi.dao.model.ItemCriteriaPayout itemCriteriaPayout : createOfferRequest.getTargetSlabs()
270
                .get(0).getItemCriteriaPayouts()) {
270
                .get(0).getItemCriteriaPayouts()) {
271
            itemCriteriaPayout.setNextSlab(itemCriteriaPayout.getPayoutSlabs().get(0));
271
            itemCriteriaPayout.setNextSlab(itemCriteriaPayout.getPayoutSlabs().get(0));
272
        }
272
        }
Line 1061... Line 1061...
1061
        List<InventoryItem> inventoryItems = inventoryItemRepository.selectBySerialNumbers(serialNumberMap.keySet());
1061
        List<InventoryItem> inventoryItems = inventoryItemRepository.selectBySerialNumbers(serialNumberMap.keySet());
1062
        inventoryItems = inventoryItems.stream().filter(x -> x.getFofoId() == fofoId).collect(Collectors.toList());
1062
        inventoryItems = inventoryItems.stream().filter(x -> x.getFofoId() == fofoId).collect(Collectors.toList());
1063
        Map<String, InventoryItem> inventoryItemMap = inventoryItems.stream().collect(Collectors.toMap(x -> x.getSerialNumber(), x -> x, (u, v) -> v.getCreateTimestamp().isAfter(u.getCreateTimestamp()) ? v : u));
1063
        Map<String, InventoryItem> inventoryItemMap = inventoryItems.stream().collect(Collectors.toMap(x -> x.getSerialNumber(), x -> x, (u, v) -> v.getCreateTimestamp().isAfter(u.getCreateTimestamp()) ? v : u));
1064
        return inventoryItemMap;
1064
        return inventoryItemMap;
1065
    }
1065
    }
-
 
1066
 
-
 
1067
 
-
 
1068
    @Override
-
 
1069
    public String getPartnerCriteriaString(PartnerCriteria partnerCriteria) {
-
 
1070
        StringBuilder sb = new StringBuilder();
-
 
1071
        if (partnerCriteria.getFofoIds().size() > 0) {
-
 
1072
            List<Integer> fofoIds = partnerCriteria.getFofoIds();
-
 
1073
            appendPartnerCodes(fofoIds, sb);
-
 
1074
 
-
 
1075
        } else {
-
 
1076
            sb.append("All");
-
 
1077
            if (partnerCriteria.getPartnerTypes().size() > 0) {
-
 
1078
                sb.append(" ").append(String.join(", ", partnerCriteria.getPartnerTypes().stream().map(x -> x.getValue()).collect(Collectors.toList())));
-
 
1079
            }
-
 
1080
            sb.append(" partners ");
-
 
1081
            if (partnerCriteria.getRegionIds().size() > 0) {
-
 
1082
                sb.append("from ");
-
 
1083
                sb.append(String.join(", ", partnerCriteria.getRegionIds().stream().map(x -> ProfitMandiConstants.WAREHOUSE_MAP.get(x)).collect(Collectors.toList())));
-
 
1084
            }
-
 
1085
            if (partnerCriteria.getExcludeFofoIds() != null && partnerCriteria.getExcludeFofoIds().size() > 0) {
-
 
1086
                sb.append("excluding ");
-
 
1087
                appendPartnerCodes(partnerCriteria.getExcludeFofoIds(), sb);
-
 
1088
            }
-
 
1089
        }
-
 
1090
        return sb.toString();
-
 
1091
    }
-
 
1092
 
-
 
1093
    private void appendPartnerCodes(List<Integer> fofoIds, StringBuilder sb) {
-
 
1094
        Map<Integer, CustomRetailer> customRetailersMap = retailerService.getAllFofoRetailers();
-
 
1095
        List<String> businessNames = fofoIds.stream().map(x -> customRetailersMap.get(x)).filter(x -> x != null).map(x -> x.getCode()).collect(Collectors.toList());
-
 
1096
        sb.append(String.join(", ", businessNames));
-
 
1097
    }
1066
}
1098
}