| Line 28... |
Line 28... |
| 28 |
import org.apache.commons.io.output.ByteArrayOutputStream;
|
28 |
import org.apache.commons.io.output.ByteArrayOutputStream;
|
| 29 |
import org.apache.logging.log4j.LogManager;
|
29 |
import org.apache.logging.log4j.LogManager;
|
| 30 |
import org.apache.logging.log4j.Logger;
|
30 |
import org.apache.logging.log4j.Logger;
|
| 31 |
import org.apache.poi.EncryptedDocumentException;
|
31 |
import org.apache.poi.EncryptedDocumentException;
|
| 32 |
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
32 |
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
|
| 33 |
import org.apache.solr.common.util.Hash;
|
- |
|
| 34 |
import org.springframework.beans.factory.annotation.Autowired;
|
33 |
import org.springframework.beans.factory.annotation.Autowired;
|
| 35 |
import org.springframework.beans.factory.annotation.Qualifier;
|
34 |
import org.springframework.beans.factory.annotation.Qualifier;
|
| 36 |
import org.springframework.beans.factory.annotation.Value;
|
35 |
import org.springframework.beans.factory.annotation.Value;
|
| 37 |
import org.springframework.core.io.ByteArrayResource;
|
36 |
import org.springframework.core.io.ByteArrayResource;
|
| 38 |
import org.springframework.mail.javamail.JavaMailSender;
|
37 |
import org.springframework.mail.javamail.JavaMailSender;
|
| Line 886... |
Line 885... |
| 886 |
List<SchemeInOut> rolledbackSios = new ArrayList<>();
|
885 |
List<SchemeInOut> rolledbackSios = new ArrayList<>();
|
| 887 |
Map<Integer, Integer> userWalletMap = userWalletRepository.selectAll().stream()
|
886 |
Map<Integer, Integer> userWalletMap = userWalletRepository.selectAll().stream()
|
| 888 |
.collect(Collectors.toMap(UserWallet::getUserId, UserWallet::getId));
|
887 |
.collect(Collectors.toMap(UserWallet::getUserId, UserWallet::getId));
|
| 889 |
Map<Integer, SchemeType> schemeTypeMap = schemeRepository.selectAll().stream()
|
888 |
Map<Integer, SchemeType> schemeTypeMap = schemeRepository.selectAll().stream()
|
| 890 |
.collect(Collectors.toMap(Scheme::getId, Scheme::getType));
|
889 |
.collect(Collectors.toMap(Scheme::getId, Scheme::getType));
|
| 891 |
/*LocalDateTime startDate = LocalDate.of(2018, 9, 1).atStartOfDay();
|
890 |
LocalDateTime startDate = LocalDate.of(2018, 9, 1).atStartOfDay();
|
| 892 |
LocalDateTime endDate = startDate.plusMonths(1);
|
891 |
LocalDateTime endDate = startDate.plusMonths(1);
|
| 893 |
List<FofoOrder> allOrders = fofoOrderRepository.selectBetweenSaleDate(startDate, endDate);
|
892 |
List<FofoOrder> allOrders = fofoOrderRepository.selectBetweenSaleDate(startDate, endDate);
|
| 894 |
Collections.reverse(allOrders);*/
|
893 |
// Collections.reverse(allOrders);
|
| - |
|
894 |
// List<FofoOrder> allOrders =
|
| 895 |
List<FofoOrder> allOrders = Arrays.asList(fofoOrderRepository.selectByInvoiceNumber("UPGZ019/25"));
|
895 |
// Arrays.asList(fofoOrderRepository.selectByInvoiceNumber("UPGZ019/25"));
|
| 896 |
Set<String> serialNumbersConsidered = new HashSet<>();
|
896 |
Set<String> serialNumbersConsidered = new HashSet<>();
|
| 897 |
allOrders.stream().forEach(fofoOrder -> {
|
897 |
allOrders.stream().forEach(fofoOrder -> {
|
| 898 |
String description = "Adjustment of Duplicate Scheme for Sale Invoice " + fofoOrder.getInvoiceNumber();
|
898 |
String description = "Adjustment of Duplicate Scheme for Sale Invoice " + fofoOrder.getInvoiceNumber();
|
| 899 |
Map<Integer, String> inventorySerialNumberMap = new HashMap<>();
|
899 |
Map<Integer, String> inventorySerialNumberMap = new HashMap<>();
|
| 900 |
float amountToRollback = 0;
|
900 |
float amountToRollback = 0;
|
| Line 902... |
Line 902... |
| 902 |
orderItems.forEach(x -> {
|
902 |
orderItems.forEach(x -> {
|
| 903 |
inventorySerialNumberMap.putAll(x.getFofoLineItems().stream().filter(li -> li.getSerialNumber() != null)
|
903 |
inventorySerialNumberMap.putAll(x.getFofoLineItems().stream().filter(li -> li.getSerialNumber() != null)
|
| 904 |
.collect(Collectors.toMap(FofoLineItem::getInventoryItemId, FofoLineItem::getSerialNumber)));
|
904 |
.collect(Collectors.toMap(FofoLineItem::getInventoryItemId, FofoLineItem::getSerialNumber)));
|
| 905 |
});
|
905 |
});
|
| 906 |
if (inventorySerialNumberMap.size() > 0) {
|
906 |
if (inventorySerialNumberMap.size() > 0) {
|
| - |
|
907 |
for (Map.Entry<Integer, String> inventorySerialNumberEntry : inventorySerialNumberMap.entrySet()) {
|
| 907 |
for (String serialNumber : inventorySerialNumberMap.values()) {
|
908 |
String serialNumber = inventorySerialNumberEntry.getValue();
|
| - |
|
909 |
int inventoryItemId = inventorySerialNumberEntry.getKey();
|
| 908 |
if(serialNumbersConsidered.contains(serialNumber)) {
|
910 |
if (serialNumbersConsidered.contains(serialNumber)) {
|
| - |
|
911 |
// This will rollback scheme for differenct orders for same serial
|
| - |
|
912 |
List<SchemeInOut> sios = schemeInOutRepository
|
| - |
|
913 |
.selectByInventoryItemIds(new HashSet<>(inventoryItemId)).stream()
|
| - |
|
914 |
.filter(x -> schemeTypeMap.get(x.getSchemeId()).equals(SchemeType.OUT))
|
| - |
|
915 |
.collect(Collectors.toList());
|
| 909 |
continue;
|
916 |
Collections.reverse(sios);
|
| - |
|
917 |
for (SchemeInOut sio : sios) {
|
| - |
|
918 |
sio.setRolledBackTimestamp(LocalDateTime.now());
|
| - |
|
919 |
amountToRollback += sio.getAmount();
|
| - |
|
920 |
// sio.setSchemeType(SchemeType.OUT);
|
| - |
|
921 |
sio.setSerialNumber(serialNumber);
|
| - |
|
922 |
sio.setStoreCode(fofoOrder.getInvoiceNumber().split("/")[0]);
|
| - |
|
923 |
rolledbackSios.add(sio);
|
| 910 |
}
|
924 |
}
|
| - |
|
925 |
description = description.concat(" "+ serialNumber +" ");
|
| - |
|
926 |
} else {
|
| 911 |
serialNumbersConsidered.add(serialNumber);
|
927 |
serialNumbersConsidered.add(serialNumber);
|
| - |
|
928 |
List<Integer> schemesConsidered = new ArrayList<>();
|
| 912 |
List<SchemeInOut> sios = schemeInOutRepository
|
929 |
List<SchemeInOut> sios = schemeInOutRepository
|
| 913 |
.selectAllDuplicate(fofoOrder.getFofoId(), Arrays.asList(serialNumber)).stream()
|
930 |
.selectByInventoryItemIds(new HashSet<>(inventoryItemId)).stream()
|
| 914 |
.filter(x -> schemeTypeMap.get(x.getSchemeId()).equals(SchemeType.OUT))
|
931 |
.filter(x -> schemeTypeMap.get(x.getSchemeId()).equals(SchemeType.OUT))
|
| 915 |
.collect(Collectors.toList());
|
932 |
.collect(Collectors.toList());
|
| 916 |
UserWalletHistory uwh = new UserWalletHistory();
|
- |
|
| 917 |
Set<Integer> schemesConsidered = new HashSet<>();
|
- |
|
| 918 |
Collections.reverse(sios);
|
933 |
Collections.reverse(sios);
|
| 919 |
for (SchemeInOut sio : sios) {
|
934 |
for (SchemeInOut sio : sios) {
|
| 920 |
if (!schemesConsidered.contains(sio.getSchemeId())) {
|
935 |
if (!schemesConsidered.contains(sio.getSchemeId())) {
|
| 921 |
schemesConsidered.add(sio.getSchemeId());
|
936 |
schemesConsidered.add(sio.getSchemeId());
|
| 922 |
continue;
|
937 |
continue;
|
| - |
|
938 |
}
|
| - |
|
939 |
sio.setRolledBackTimestamp(LocalDateTime.now());
|
| - |
|
940 |
amountToRollback += sio.getAmount();
|
| - |
|
941 |
// sio.setSchemeType(SchemeType.OUT);
|
| - |
|
942 |
sio.setSerialNumber(serialNumber);
|
| - |
|
943 |
sio.setStoreCode(fofoOrder.getInvoiceNumber().split("/")[0]);
|
| - |
|
944 |
rolledbackSios.add(sio);
|
| 923 |
}
|
945 |
}
|
| 924 |
sio.setRolledBackTimestamp(LocalDateTime.now());
|
- |
|
| 925 |
amountToRollback += sio.getAmount();
|
- |
|
| 926 |
sio.setSchemeType(SchemeType.OUT);
|
- |
|
| 927 |
sio.setSerialNumber(serialNumber);
|
- |
|
| 928 |
sio.setStoreCode(fofoOrder.getInvoiceNumber().split("/")[0]);
|
- |
|
| 929 |
rolledbackSios.add(sio);
|
- |
|
| 930 |
}
|
- |
|
| 931 |
if (amountToRollback > 0) {
|
- |
|
| 932 |
uwh.setAmount(Math.round(amountToRollback));
|
- |
|
| 933 |
uwh.setDescription(description);
|
- |
|
| 934 |
uwh.setTimestamp(LocalDateTime.now());
|
- |
|
| 935 |
uwh.setReferenceType(WalletReferenceType.SCHEME_OUT);
|
- |
|
| 936 |
uwh.setReference(fofoOrder.getId());
|
- |
|
| 937 |
uwh.setWalletId(userWalletMap.get(fofoOrder.getFofoId()));
|
- |
|
| 938 |
uwh.setFofoId(fofoOrder.getFofoId());
|
- |
|
| 939 |
uwh.setStoreCode(fofoOrder.getInvoiceNumber().split("/")[0]);
|
- |
|
| 940 |
userWalletHistory.add(uwh);
|
- |
|
| 941 |
}
|
946 |
}
|
| - |
|
947 |
|
| 942 |
}
|
948 |
}
|
| 943 |
}
|
949 |
}
|
| - |
|
950 |
if (amountToRollback > 0) {
|
| - |
|
951 |
UserWalletHistory uwh = new UserWalletHistory();
|
| - |
|
952 |
uwh.setAmount(Math.round(amountToRollback));
|
| - |
|
953 |
uwh.setDescription(description);
|
| - |
|
954 |
uwh.setTimestamp(LocalDateTime.now());
|
| - |
|
955 |
uwh.setReferenceType(WalletReferenceType.SCHEME_OUT);
|
| - |
|
956 |
uwh.setReference(fofoOrder.getId());
|
| 944 |
// LOGGER.info("Found {} duplicate schemeouts for Orderid {}", sios.size(),
|
957 |
uwh.setWalletId(userWalletMap.get(fofoOrder.getFofoId()));
|
| 945 |
// fofoOrder.getId());
|
958 |
uwh.setFofoId(fofoOrder.getFofoId());
|
| - |
|
959 |
uwh.setStoreCode(fofoOrder.getInvoiceNumber().split("/")[0]);
|
| - |
|
960 |
userWalletHistory.add(uwh);
|
| - |
|
961 |
}
|
| 946 |
});
|
962 |
});
|
| 947 |
|
963 |
|
| 948 |
ByteArrayOutputStream baos = FileUtil.getCSVByteStream(
|
964 |
ByteArrayOutputStream baos = FileUtil.getCSVByteStream(
|
| 949 |
Arrays.asList("User Id", "Store Code", "Reference Type", "Reference", "Amount", "Description",
|
965 |
Arrays.asList("User Id", "Store Code", "Reference Type", "Reference", "Amount", "Description",
|
| 950 |
"Timestamp"),
|
966 |
"Timestamp"),
|
| Line 964... |
Line 980... |
| 964 |
Utils.sendMailWithAttachments(googleMailSender,
|
980 |
Utils.sendMailWithAttachments(googleMailSender,
|
| 965 |
new String[] { "amit.gupta@shop2020.in", "neeraj.gupta@smartdukaan.com" }, null,
|
981 |
new String[] { "amit.gupta@shop2020.in", "neeraj.gupta@smartdukaan.com" }, null,
|
| 966 |
"Partner Excess Amount", "PFA",
|
982 |
"Partner Excess Amount", "PFA",
|
| 967 |
new Attachment[] { new Attachment("WalletSummary.csv", new ByteArrayResource(baos.toByteArray())),
|
983 |
new Attachment[] { new Attachment("WalletSummary.csv", new ByteArrayResource(baos.toByteArray())),
|
| 968 |
new Attachment("SchemeOutRolledback.csv", new ByteArrayResource(baosOuts.toByteArray())) });
|
984 |
new Attachment("SchemeOutRolledback.csv", new ByteArrayResource(baosOuts.toByteArray())) });
|
| 969 |
|
985 |
|
| 970 |
throw new Exception();
|
986 |
throw new Exception();
|
| 971 |
}
|
987 |
}
|
| 972 |
|
988 |
|
| 973 |
public void dryRunSchemeOutReco1() throws Exception {
|
989 |
public void dryRunSchemeOutReco1() throws Exception {
|
| 974 |
List<Integer> references = Arrays.asList(6744, 7347, 8320, 8891, 9124, 9217, 9263, 9379);
|
990 |
List<Integer> references = Arrays.asList(6744, 7347, 8320, 8891, 9124, 9217, 9263, 9379);
|
| Line 1037... |
Line 1053... |
| 1037 |
Utils.sendMailWithAttachments(googleMailSender,
|
1053 |
Utils.sendMailWithAttachments(googleMailSender,
|
| 1038 |
new String[] { "amit.gupta@shop2020.in", "neeraj.gupta@smartdukaan.com" }, null,
|
1054 |
new String[] { "amit.gupta@shop2020.in", "neeraj.gupta@smartdukaan.com" }, null,
|
| 1039 |
"Partner Excess Amount", "PFA",
|
1055 |
"Partner Excess Amount", "PFA",
|
| 1040 |
new Attachment[] { new Attachment("WalletSummary.csv", new ByteArrayResource(baos.toByteArray())),
|
1056 |
new Attachment[] { new Attachment("WalletSummary.csv", new ByteArrayResource(baos.toByteArray())),
|
| 1041 |
new Attachment("SchemeOutRolledback.csv", new ByteArrayResource(baosOuts.toByteArray())) });
|
1057 |
new Attachment("SchemeOutRolledback.csv", new ByteArrayResource(baosOuts.toByteArray())) });
|
| 1042 |
|
1058 |
|
| 1043 |
throw new Exception();
|
1059 |
throw new Exception();
|
| 1044 |
|
1060 |
|
| 1045 |
}
|
1061 |
}
|
| 1046 |
|
1062 |
|
| 1047 |
}
|
1063 |
}
|