Subversion Repositories SmartDukaan

Rev

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

Rev 24622 Rev 24623
Line 27... Line 27...
27
import org.apache.commons.io.output.ByteArrayOutputStream;
27
import org.apache.commons.io.output.ByteArrayOutputStream;
28
import org.apache.logging.log4j.LogManager;
28
import org.apache.logging.log4j.LogManager;
29
import org.apache.logging.log4j.Logger;
29
import org.apache.logging.log4j.Logger;
30
import org.apache.poi.EncryptedDocumentException;
30
import org.apache.poi.EncryptedDocumentException;
31
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
31
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
-
 
32
import org.apache.solr.common.util.Hash;
32
import org.springframework.beans.factory.annotation.Autowired;
33
import org.springframework.beans.factory.annotation.Autowired;
33
import org.springframework.beans.factory.annotation.Qualifier;
34
import org.springframework.beans.factory.annotation.Qualifier;
34
import org.springframework.beans.factory.annotation.Value;
35
import org.springframework.beans.factory.annotation.Value;
35
import org.springframework.core.io.ByteArrayResource;
36
import org.springframework.core.io.ByteArrayResource;
36
import org.springframework.mail.javamail.JavaMailSender;
37
import org.springframework.mail.javamail.JavaMailSender;
Line 885... Line 886...
885
		List<SchemeInOut> rolledbackSios = new ArrayList<>();
886
		List<SchemeInOut> rolledbackSios = new ArrayList<>();
886
		Map<Integer, Integer> userWalletMap = userWalletRepository.selectAll().stream()
887
		Map<Integer, Integer> userWalletMap = userWalletRepository.selectAll().stream()
887
				.collect(Collectors.toMap(UserWallet::getUserId, UserWallet::getId));
888
				.collect(Collectors.toMap(UserWallet::getUserId, UserWallet::getId));
888
		Map<Integer, SchemeType> schemeTypeMap = schemeRepository.selectAll().stream()
889
		Map<Integer, SchemeType> schemeTypeMap = schemeRepository.selectAll().stream()
889
				.collect(Collectors.toMap(Scheme::getId, Scheme::getType));
890
				.collect(Collectors.toMap(Scheme::getId, Scheme::getType));
890
		//LocalDateTime startDate = LocalDate.of(2018, 9, 1).atStartOfDay();
891
		// LocalDateTime startDate = LocalDate.of(2018, 9, 1).atStartOfDay();
891
		//LocalDateTime endDate = startDate.plusMonths(1);
892
		// LocalDateTime endDate = startDate.plusMonths(1);
-
 
893
		// List<FofoOrder> allOrders =
892
		//List<FofoOrder> allOrders = fofoOrderRepository.selectBetweenSaleDate(startDate, endDate);
894
		// fofoOrderRepository.selectBetweenSaleDate(startDate, endDate);
893
		List<FofoOrder> allOrders = Arrays.asList(fofoOrderRepository.selectByInvoiceNumber("HRKN039/27"));
895
		List<FofoOrder> allOrders = Arrays.asList(fofoOrderRepository.selectByInvoiceNumber("HRKN039/27"));
894
		//
896
		//
895
		allOrders.stream().forEach(fofoOrder -> {
897
		allOrders.stream().forEach(fofoOrder -> {
896
			String description = "Adjustment of Duplicate Scheme for Sale Invoice " + fofoOrder.getInvoiceNumber();
898
			String description = "Adjustment of Duplicate Scheme for Sale Invoice " + fofoOrder.getInvoiceNumber();
897
			Map<Integer, String> inventorySerialNumberMap = new HashMap<>();
899
			Map<Integer, String> inventorySerialNumberMap = new HashMap<>();
Line 900... Line 902...
900
			orderItems.forEach(x -> {
902
			orderItems.forEach(x -> {
901
				inventorySerialNumberMap.putAll(x.getFofoLineItems().stream().filter(li -> li.getSerialNumber() != null)
903
				inventorySerialNumberMap.putAll(x.getFofoLineItems().stream().filter(li -> li.getSerialNumber() != null)
902
						.collect(Collectors.toMap(FofoLineItem::getInventoryItemId, FofoLineItem::getSerialNumber)));
904
						.collect(Collectors.toMap(FofoLineItem::getInventoryItemId, FofoLineItem::getSerialNumber)));
903
			});
905
			});
904
			if (inventorySerialNumberMap.size() > 0) {
906
			if (inventorySerialNumberMap.size() > 0) {
-
 
907
				for (String serialNumber : inventorySerialNumberMap.values()) {
905
				List<SchemeInOut> sios = schemeInOutRepository
908
					List<SchemeInOut> sios = schemeInOutRepository
906
						.selectAllDuplicate(fofoOrder.getFofoId(),
909
							.selectAllDuplicate(fofoOrder.getFofoId(), Arrays.asList(serialNumber)).stream()
907
								new ArrayList<String>(inventorySerialNumberMap.values()))
-
 
908
						.stream().filter(x -> schemeTypeMap.get(x.getSchemeId()).equals(SchemeType.OUT))
910
							.filter(x -> schemeTypeMap.get(x.getSchemeId()).equals(SchemeType.OUT))
909
						.collect(Collectors.toList());
911
							.collect(Collectors.toList());
910
				LOGGER.info("Found {} duplicate schemeouts for Orderid {}", sios.size(), fofoOrder.getId());
-
 
911
				UserWalletHistory uwh = new UserWalletHistory();
912
					UserWalletHistory uwh = new UserWalletHistory();
-
 
913
					Set<Integer> schemesConsidered = new HashSet<>();
912
				for (SchemeInOut sio : sios) {
914
					for (SchemeInOut sio : sios) {
913
					String serialNumber = inventoryItemRepository.selectById(sio.getInventoryItemId())
915
						if (!schemesConsidered.contains(sio.getSchemeId())) {
-
 
916
							schemesConsidered.add(sio.getSchemeId());
-
 
917
							continue;
-
 
918
						}
-
 
919
						sio.setRolledBackTimestamp(LocalDateTime.now());
-
 
920
						amountToRollback += sio.getAmount();
-
 
921
						sio.setSchemeType(SchemeType.OUT);
914
							.getSerialNumber();
922
						sio.setSerialNumber(serialNumber);
915
					if (!serialSchemeConsidered.contains(serialNumber + String.valueOf(sio.getSchemeId()))) {
923
						sio.setStoreCode(fofoOrder.getInvoiceNumber().split("/")[0]);
-
 
924
						rolledbackSios.add(sio);
-
 
925
					}
-
 
926
					if (amountToRollback > 0) {
-
 
927
						uwh.setAmount(Math.round(amountToRollback));
-
 
928
						uwh.setDescription(description);
-
 
929
						uwh.setTimestamp(LocalDateTime.now());
-
 
930
						uwh.setReferenceType(WalletReferenceType.SCHEME_OUT);
-
 
931
						uwh.setReference(fofoOrder.getId());
916
						serialSchemeConsidered.add(serialNumber + String.valueOf(sio.getSchemeId()));
932
						uwh.setWalletId(userWalletMap.get(fofoOrder.getFofoId()));
-
 
933
						uwh.setFofoId(fofoOrder.getFofoId());
-
 
934
						uwh.setStoreCode(fofoOrder.getInvoiceNumber().split("/")[0]);
917
						continue;
935
						userWalletHistory.add(uwh);
918
					}
936
					}
919
					sio.setRolledBackTimestamp(LocalDateTime.now());
-
 
920
					amountToRollback += sio.getAmount();
-
 
921
					sio.setSchemeType(SchemeType.OUT);
-
 
922
					sio.setSerialNumber(serialNumber);
-
 
923
					sio.setStoreCode(fofoOrder.getInvoiceNumber().split("/")[0]);
-
 
924
					rolledbackSios.add(sio);
-
 
925
				}
-
 
926
				if (amountToRollback > 0) {
-
 
927
					uwh.setAmount(Math.round(amountToRollback));
-
 
928
					uwh.setDescription(description);
-
 
929
					uwh.setTimestamp(LocalDateTime.now());
-
 
930
					uwh.setReferenceType(WalletReferenceType.SCHEME_OUT);
-
 
931
					uwh.setReference(fofoOrder.getId());
-
 
932
					uwh.setWalletId(userWalletMap.get(fofoOrder.getFofoId()));
-
 
933
					uwh.setFofoId(fofoOrder.getFofoId());
-
 
934
					uwh.setStoreCode(fofoOrder.getInvoiceNumber().split("/")[0]);
-
 
935
					userWalletHistory.add(uwh);
-
 
936
				}
937
				}
937
			}
938
			}
-
 
939
			// LOGGER.info("Found {} duplicate schemeouts for Orderid {}", sios.size(),
-
 
940
			// fofoOrder.getId());
938
		});
941
		});
939
 
942
 
940
		ByteArrayOutputStream baos = FileUtil.getCSVByteStream(
943
		ByteArrayOutputStream baos = FileUtil.getCSVByteStream(
941
				Arrays.asList("User Id", "Store Code", "Reference Type", "Reference", "Amount", "Description",
944
				Arrays.asList("User Id", "Store Code", "Reference Type", "Reference", "Amount", "Description",
942
						"Timestamp"),
945
						"Timestamp"),
Line 951... Line 954...
951
				rolledbackSios.stream()
954
				rolledbackSios.stream()
952
						.map(x -> Arrays.asList(x.getSchemeId(), x.getSchemeType(), x.getStoreCode(),
955
						.map(x -> Arrays.asList(x.getSchemeId(), x.getSchemeType(), x.getStoreCode(),
953
								x.getSerialNumber(), x.getAmount(), x.getCreateTimestamp(), x.getRolledBackTimestamp()))
956
								x.getSerialNumber(), x.getAmount(), x.getCreateTimestamp(), x.getRolledBackTimestamp()))
954
						.collect(Collectors.toList()));
957
						.collect(Collectors.toList()));
955
 
958
 
-
 
959
		Utils.sendMailWithAttachments(googleMailSender,
956
		Utils.sendMailWithAttachments(googleMailSender, new String[] { "amit.gupta@shop2020.in", "neeraj.gupta@smartdukaan.com" }, null,
960
				new String[] { "amit.gupta@shop2020.in", "neeraj.gupta@smartdukaan.com" }, null,
957
				"Partner Excess Amount", "PFA",
961
				"Partner Excess Amount", "PFA",
958
				new Attachment[] { new Attachment("WalletSummary.csv", new ByteArrayResource(baos.toByteArray())),
962
				new Attachment[] { new Attachment("WalletSummary.csv", new ByteArrayResource(baos.toByteArray())),
959
						new Attachment("SchemeOutRolledback.csv", new ByteArrayResource(baosOuts.toByteArray())) });
963
						new Attachment("SchemeOutRolledback.csv", new ByteArrayResource(baosOuts.toByteArray())) });
960
	}
964
	}
961
 
965
 
Line 1021... Line 1025...
1021
				rolledbackSios.stream()
1025
				rolledbackSios.stream()
1022
						.map(x -> Arrays.asList(x.getSchemeId(), x.getSchemeType(), x.getStoreCode(),
1026
						.map(x -> Arrays.asList(x.getSchemeId(), x.getSchemeType(), x.getStoreCode(),
1023
								x.getSerialNumber(), x.getAmount(), x.getCreateTimestamp(), x.getRolledBackTimestamp()))
1027
								x.getSerialNumber(), x.getAmount(), x.getCreateTimestamp(), x.getRolledBackTimestamp()))
1024
						.collect(Collectors.toList()));
1028
						.collect(Collectors.toList()));
1025
 
1029
 
-
 
1030
		Utils.sendMailWithAttachments(googleMailSender,
1026
		Utils.sendMailWithAttachments(googleMailSender, new String[] { "amit.gupta@shop2020.in", "neeraj.gupta@smartdukaan.com" }, null,
1031
				new String[] { "amit.gupta@shop2020.in", "neeraj.gupta@smartdukaan.com" }, null,
1027
				"Partner Excess Amount", "PFA",
1032
				"Partner Excess Amount", "PFA",
1028
				new Attachment[] { new Attachment("WalletSummary.csv", new ByteArrayResource(baos.toByteArray())),
1033
				new Attachment[] { new Attachment("WalletSummary.csv", new ByteArrayResource(baos.toByteArray())),
1029
						new Attachment("SchemeOutRolledback.csv", new ByteArrayResource(baosOuts.toByteArray())) });
1034
						new Attachment("SchemeOutRolledback.csv", new ByteArrayResource(baosOuts.toByteArray())) });
1030
 
1035
 
1031
	}
1036
	}