Subversion Repositories SmartDukaan

Rev

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

Rev 26799 Rev 26928
Line 5... Line 5...
5
import java.time.LocalDateTime;
5
import java.time.LocalDateTime;
6
import java.time.LocalTime;
6
import java.time.LocalTime;
7
import java.util.ArrayList;
7
import java.util.ArrayList;
8
import java.util.Arrays;
8
import java.util.Arrays;
9
import java.util.Collections;
9
import java.util.Collections;
-
 
10
import java.util.Comparator;
10
import java.util.HashMap;
11
import java.util.HashMap;
11
import java.util.HashSet;
12
import java.util.HashSet;
12
import java.util.List;
13
import java.util.List;
13
import java.util.Map;
14
import java.util.Map;
14
import java.util.Set;
15
import java.util.Set;
15
import java.util.concurrent.TimeUnit;
16
import java.util.concurrent.TimeUnit;
-
 
17
import java.util.function.Function;
16
import java.util.stream.Collectors;
18
import java.util.stream.Collectors;
17
 
19
 
18
import org.apache.commons.io.output.ByteArrayOutputStream;
20
import org.apache.commons.io.output.ByteArrayOutputStream;
19
import org.apache.commons.lang.StringUtils;
21
import org.apache.commons.lang.StringUtils;
20
import org.apache.logging.log4j.LogManager;
22
import org.apache.logging.log4j.LogManager;
Line 46... Line 48...
46
import com.spice.profitmandi.dao.entity.fofo.FofoOrder;
48
import com.spice.profitmandi.dao.entity.fofo.FofoOrder;
47
import com.spice.profitmandi.dao.entity.fofo.FofoOrderItem;
49
import com.spice.profitmandi.dao.entity.fofo.FofoOrderItem;
48
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
50
import com.spice.profitmandi.dao.entity.fofo.FofoStore;
49
import com.spice.profitmandi.dao.entity.fofo.InventoryItem;
51
import com.spice.profitmandi.dao.entity.fofo.InventoryItem;
50
import com.spice.profitmandi.dao.entity.fofo.PartnerTargetDetails;
52
import com.spice.profitmandi.dao.entity.fofo.PartnerTargetDetails;
-
 
53
import com.spice.profitmandi.dao.entity.fofo.PartnerType;
51
import com.spice.profitmandi.dao.entity.fofo.PrebookingOrder;
54
import com.spice.profitmandi.dao.entity.fofo.PrebookingOrder;
52
import com.spice.profitmandi.dao.entity.fofo.Purchase;
55
import com.spice.profitmandi.dao.entity.fofo.Purchase;
53
import com.spice.profitmandi.dao.entity.fofo.PurchaseReturnItem;
56
import com.spice.profitmandi.dao.entity.fofo.PurchaseReturnItem;
54
import com.spice.profitmandi.dao.entity.fofo.ScanRecord;
57
import com.spice.profitmandi.dao.entity.fofo.ScanRecord;
55
import com.spice.profitmandi.dao.entity.fofo.SchemeInOut;
58
import com.spice.profitmandi.dao.entity.fofo.SchemeInOut;
Line 90... Line 93...
90
import com.spice.profitmandi.dao.repository.fofo.SchemeInOutRepository;
93
import com.spice.profitmandi.dao.repository.fofo.SchemeInOutRepository;
91
import com.spice.profitmandi.dao.repository.fofo.SchemeItemRepository;
94
import com.spice.profitmandi.dao.repository.fofo.SchemeItemRepository;
92
import com.spice.profitmandi.dao.repository.fofo.TargetSlabRepository;
95
import com.spice.profitmandi.dao.repository.fofo.TargetSlabRepository;
93
import com.spice.profitmandi.dao.repository.fofo.TargetSlabRepositoryImpl;
96
import com.spice.profitmandi.dao.repository.fofo.TargetSlabRepositoryImpl;
94
import com.spice.profitmandi.dao.repository.inventory.SaholicInventorySnapshotRepository;
97
import com.spice.profitmandi.dao.repository.inventory.SaholicInventorySnapshotRepository;
95
import com.spice.profitmandi.dao.repository.inventory.SaholicReservationInventorySnapshotRepository;
98
import com.spice.profitmandi.dao.repository.inventory.SaholicReservationSnapshotRepository;
96
import com.spice.profitmandi.dao.repository.transaction.LineItemImeisRepository;
99
import com.spice.profitmandi.dao.repository.transaction.LineItemImeisRepository;
97
import com.spice.profitmandi.dao.repository.transaction.LineItemRepository;
100
import com.spice.profitmandi.dao.repository.transaction.LineItemRepository;
98
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
101
import com.spice.profitmandi.dao.repository.transaction.OrderRepository;
99
import com.spice.profitmandi.dao.repository.transaction.ReturnOrderRepository;
102
import com.spice.profitmandi.dao.repository.transaction.ReturnOrderRepository;
100
import com.spice.profitmandi.dao.repository.transaction.SellerWarehouseRepository;
103
import com.spice.profitmandi.dao.repository.transaction.SellerWarehouseRepository;
Line 123... Line 126...
123
	@Autowired
126
	@Autowired
124
	private LineItemRepository lineItemRepository;
127
	private LineItemRepository lineItemRepository;
125
 
128
 
126
	@Autowired
129
	@Autowired
127
	private PurchaseReturnItemRepository purchaseReturnItemRepository;
130
	private PurchaseReturnItemRepository purchaseReturnItemRepository;
128
	
131
 
129
	@Autowired
132
	@Autowired
130
	private SaholicInventorySnapshotRepository saholicInventorySnapshotRepository;
133
	private SaholicInventorySnapshotRepository saholicInventorySnapshotRepository;
131
 
134
 
132
	@Autowired
135
	@Autowired
133
	private CsService csService;
136
	private CsService csService;
Line 140... Line 143...
140
 
143
 
141
	@Autowired
144
	@Autowired
142
	private PrebookingOrderRepository prebookingOrderRepository;
145
	private PrebookingOrderRepository prebookingOrderRepository;
143
 
146
 
144
	@Autowired
147
	@Autowired
145
	private SaholicReservationInventorySnapshotRepository saholicReservationInventorySnapshotRepository;
148
	private SaholicReservationSnapshotRepository saholicReservationInventorySnapshotRepository;
146
 
149
 
147
	@Autowired
150
	@Autowired
148
	private TargetSlabRepository targetSlabRepository;
151
	private TargetSlabRepository targetSlabRepository;
149
 
152
 
150
	@Autowired
153
	@Autowired
Line 831... Line 834...
831
		}
834
		}
832
	}
835
	}
833
 
836
 
834
	public void cancelDn(String debitNoteNumber) throws Exception {
837
	public void cancelDn(String debitNoteNumber) throws Exception {
835
		DebitNote debitNote = debitNoteRepository.selectDebitNoteByNumber(debitNoteNumber);
838
		DebitNote debitNote = debitNoteRepository.selectDebitNoteByNumber(debitNoteNumber);
836
		
839
 
837
		List<PurchaseReturnItem> purchaseReturnItems = purchaseReturnItemRepository.selectAllByDebitNoteId(debitNote.getId());
840
		List<PurchaseReturnItem> purchaseReturnItems = purchaseReturnItemRepository
-
 
841
				.selectAllByDebitNoteId(debitNote.getId());
838
		// Select all inventory Item
842
		// Select all inventory Item
839
		Set<Integer> inventoryItemIds = purchaseReturnItems.stream().map(x -> x.getInventoryItemId())
843
		Set<Integer> inventoryItemIds = purchaseReturnItems.stream().map(x -> x.getInventoryItemId())
840
				.collect(Collectors.toSet());
844
				.collect(Collectors.toSet());
841
		List<InventoryItem> inventoryItems = inventoryItemRepository.selectByIds(inventoryItemIds);
845
		List<InventoryItem> inventoryItems = inventoryItemRepository.selectByIds(inventoryItemIds);
842
		for (InventoryItem inventoryItem : inventoryItems) {
846
		for (InventoryItem inventoryItem : inventoryItems) {
Line 855... Line 859...
855
					currentInventorySnapshotRepository.persist(cis);
859
					currentInventorySnapshotRepository.persist(cis);
856
				}
860
				}
857
				cis.setAvailability(cis.getAvailability() + 1);
861
				cis.setAvailability(cis.getAvailability() + 1);
858
				schemeService.processSchemeIn(inventoryItem.getPurchaseId(), inventoryItem.getFofoId());
862
				schemeService.processSchemeIn(inventoryItem.getPurchaseId(), inventoryItem.getFofoId());
859
			}
863
			}
860
		}	
864
		}
861
		purchaseReturnItems.stream().forEach(x-> purchaseReturnItemRepository.delete(x));
865
		purchaseReturnItems.stream().forEach(x -> purchaseReturnItemRepository.delete(x));
862
	}
866
	}
863
 
867
 
864
	public void processPd(int priceDropId) throws ProfitMandiBusinessException {
868
	public void processPd(int priceDropId) throws ProfitMandiBusinessException {
865
		priceDropService.processPriceDrop(priceDropId);
869
		priceDropService.processPriceDrop(priceDropId);
866
	}
870
	}
-
 
871
 
-
 
872
	public void fixScheme() throws Exception {
-
 
873
		final Map<Integer, Scheme> schemesMap = schemeRepository.selectAll().stream()
-
 
874
				.collect(Collectors.toMap(x -> x.getId(), x -> x));
-
 
875
		List<SchemeInOut> sios = schemeInOutRepository.selectAllByCreateDate(LocalDate.of(2019, 9, 1).atTime(0, 0),
-
 
876
				LocalDateTime.now());
-
 
877
		Map<SioTuple, Map<PartnerType, List<Integer>>> schemeTupleMap = sios.stream().filter(x -> x.getRolledBackTimestamp() == null)
-
 
878
				.filter(x -> schemesMap.get(x.getSchemeId()).getPartnerType() != PartnerType.ALL)
-
 
879
				.collect(Collectors.groupingBy(
-
 
880
						x -> new SioTuple(x.getInventoryItemId(), schemesMap.get(x.getSchemeId()).getType()),
-
 
881
						Collectors.groupingBy(x->schemesMap.get(x.getSchemeId()).getPartnerType(), 
-
 
882
								Collectors.mapping(x->x.getSchemeId(), Collectors.toList()))));
-
 
883
		
-
 
884
		schemeTupleMap.entrySet().stream().filter(x->x.getValue().size()>1).forEach(x->{
-
 
885
			LOGGER.info("Partner Types found {}", x.getValue());
-
 
886
			Map<PartnerType, List<Integer>> partnerTypeSchemeMap = x.getValue();
-
 
887
			PartnerType partnerTypeToRemove = partnerTypeSchemeMap.keySet().stream().min(
-
 
888
					Comparator.comparing(y->PartnerType.PartnerTypeRankMap.get(y))).get();
-
 
889
			
-
 
890
			LOGGER.info("Partner Types to remove", partnerTypeToRemove);
-
 
891
			
-
 
892
		});
-
 
893
	}
-
 
894
 
-
 
895
	private class SioTuple {
-
 
896
		int inventoryId;
-
 
897
		SchemeType schemeType;
-
 
898
 
-
 
899
		public SioTuple(int inventoryItemId, SchemeType schemeType) {
-
 
900
			this.inventoryId = inventoryItemId;
-
 
901
			this.schemeType = schemeType;
-
 
902
		}
-
 
903
 
-
 
904
		public int getInventoryId() {
-
 
905
			return inventoryId;
-
 
906
		}
-
 
907
 
-
 
908
		public void setInventoryId(int inventoryId) {
-
 
909
			this.inventoryId = inventoryId;
-
 
910
		}
-
 
911
 
-
 
912
		public SchemeType getSchemeType() {
-
 
913
			return schemeType;
-
 
914
		}
-
 
915
 
-
 
916
		public void setSchemeType(SchemeType schemeType) {
-
 
917
			this.schemeType = schemeType;
-
 
918
		}
-
 
919
 
-
 
920
		@Override
-
 
921
		public int hashCode() {
-
 
922
			final int prime = 31;
-
 
923
			int result = 1;
-
 
924
			result = prime * result + getOuterType().hashCode();
-
 
925
			result = prime * result + inventoryId;
-
 
926
			result = prime * result + ((schemeType == null) ? 0 : schemeType.hashCode());
-
 
927
			return result;
-
 
928
		}
-
 
929
 
-
 
930
		@Override
-
 
931
		public boolean equals(Object obj) {
-
 
932
			if (this == obj)
-
 
933
				return true;
-
 
934
			if (obj == null)
-
 
935
				return false;
-
 
936
			if (getClass() != obj.getClass())
-
 
937
				return false;
-
 
938
			SioTuple other = (SioTuple) obj;
-
 
939
			if (!getOuterType().equals(other.getOuterType()))
-
 
940
				return false;
-
 
941
			if (inventoryId != other.inventoryId)
-
 
942
				return false;
-
 
943
			if (schemeType != other.schemeType)
-
 
944
				return false;
-
 
945
			return true;
-
 
946
		}
-
 
947
 
-
 
948
		private RunOnceTasks getOuterType() {
-
 
949
			return RunOnceTasks.this;
-
 
950
		}
-
 
951
 
-
 
952
	}
867
}
953
}
868
 
954
 
869
//7015845171
955
//7015845171
870
956