| 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 |
}
|