Subversion Repositories SmartDukaan

Rev

Rev 32594 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
4500 mandeep.dh 1
/**
2
 * 
3
 */
4
package in.shop2020.warehouse.handler;
5
 
8689 amar.kumar 6
import in.shop2020.model.v1.inventory.InventoryService;
7
import in.shop2020.model.v1.inventory.InventoryServiceException;
8
import in.shop2020.model.v1.inventory.Warehouse;
9
import in.shop2020.thrift.clients.InventoryClient;
14491 manish.sha 10
import in.shop2020.warehouse.DoaOutInventoryItem;
7613 amar.kumar 11
import in.shop2020.warehouse.InTransitInventory;
5185 mandeep.dh 12
import in.shop2020.warehouse.ScanType;
4500 mandeep.dh 13
import in.shop2020.warehouse.domain.InventoryItem;
14
import in.shop2020.warehouse.persistence.InventoryItemMapper;
15
 
7613 amar.kumar 16
import java.util.ArrayList;
21617 amit.gupta 17
import java.util.Collections;
10215 amar.kumar 18
import java.util.Date;
10864 manish.sha 19
import java.util.HashMap;
10215 amar.kumar 20
import java.util.HashSet;
5185 mandeep.dh 21
import java.util.List;
6484 amar.kumar 22
import java.util.Map;
10215 amar.kumar 23
import java.util.Set;
5185 mandeep.dh 24
 
21617 amit.gupta 25
import org.apache.commons.collections.CollectionUtils;
26
import org.apache.commons.collections.ListUtils;
8689 amar.kumar 27
import org.apache.thrift.TException;
4500 mandeep.dh 28
import org.springframework.beans.factory.annotation.Autowired;
29
import org.springframework.stereotype.Service;
30
 
5530 mandeep.dh 31
import com.mysql.jdbc.StringUtils;
32
 
4500 mandeep.dh 33
/**
34
 * @author mandeep
35
 *
36
 */
37
@Service
38
public class InventoryItemHandler {
39
    @Autowired
40
    private InventoryItemMapper inventoryItemMapper;
41
 
42
    /**
43
     * @param inventoryItem
44
     */
5110 mandeep.dh 45
    public InventoryItem insertInventoryItem(InventoryItem inventoryItem) {
4500 mandeep.dh 46
        inventoryItemMapper.insertInventoryItem(inventoryItem);
5110 mandeep.dh 47
        return inventoryItem;
4500 mandeep.dh 48
    }
49
 
50
    /**
51
     * @param inventoryItemId
52
     * @return
53
     */
54
    public InventoryItem getInventoryItem(long inventoryItemId) {
55
        return inventoryItemMapper.getInventoryItem(inventoryItemId);
56
    }
57
 
58
    /**
59
     * @param serialNumber
60
     * @return
61
     */
62
    public InventoryItem getInventoryItem(String serialNumber) {
63
        return inventoryItemMapper.getInventoryItemFromSerialNumber(serialNumber);
64
    }
5185 mandeep.dh 65
 
66
    public List<InventoryItem> getInventoryItemFromLastScanType(ScanType scanType) {
67
        return inventoryItemMapper.getInventoryItemsFromLastScanType(scanType);
68
    }
69
 
70
    /**
71
     * @param inventoryItemId
72
     * @return
73
     */
74
    public InventoryItem getInventoryItemFromId(long inventoryItemId) {
75
        return inventoryItemMapper.getInventoryItemsFromId(inventoryItemId);
76
    }
77
 
78
    /**
79
     * @param inventoryItem
80
     */
81
    public void update(InventoryItem inventoryItem) {
82
        inventoryItemMapper.update(inventoryItem);
83
    }
5361 mandeep.dh 84
 
85
    /**
86
     * @param itemId
87
     * @param warehouseId
88
     * @return
89
     */
8565 amar.kumar 90
    public InventoryItem getInventoryItem(String itemNumber, long itemId, long warehouseId, long billingWarehouseId) {
5530 mandeep.dh 91
        if (StringUtils.isNullOrEmpty(itemNumber)) {
92
            itemNumber = null;
93
        }
94
 
8565 amar.kumar 95
        return inventoryItemMapper.getNonSerializedInventoryItem(itemNumber, itemId, warehouseId, billingWarehouseId);
5361 mandeep.dh 96
    }
6467 amar.kumar 97
 
7957 amar.kumar 98
	public Long getCurrentQuantityForNonSerializedItem(long itemId, long warehouseId, long physicalWarehouseId) {
16411 manish.sha 99
		return inventoryItemMapper.getCurrentQuantityForNonSerializedItem(itemId, warehouseId, physicalWarehouseId, 0);
6467 amar.kumar 100
	}
16411 manish.sha 101
 
102
	public Long getCurrentQuantityForNonSerializedItemWithGrnId(long itemId, long warehouseId, long physicalWarehouseId, long purchaseId) {
103
		return inventoryItemMapper.getCurrentQuantityForNonSerializedItem(itemId, warehouseId, physicalWarehouseId, purchaseId);
104
	}
6467 amar.kumar 105
 
106
	public void markPurchaseReturnIdForItem(long id, long currentQuantity, long purchaseReturnId) {
107
		inventoryItemMapper.markPurchaseReturnIdForItem(id, currentQuantity, purchaseReturnId);
108
 
109
	}
10864 manish.sha 110
 
111
	public void markPurchaseReturnIdForBadItem(long id, long currentQuantity, long purchaseReturnId) {
112
		inventoryItemMapper.markPurchaseReturnIdForBadItem(id, currentQuantity, purchaseReturnId);
113
	}
6467 amar.kumar 114
 
8689 amar.kumar 115
	public List<InventoryItem> getCurrentNonSerializedItemsByItemId(long itemId, long warehouseId) throws InventoryServiceException, TException {
116
		InventoryService.Client inventoryClient = new InventoryClient().getClient();
117
		Warehouse warehouse = inventoryClient.getWarehouse(warehouseId);
16411 manish.sha 118
		return inventoryItemMapper.getCurrentNonSerializedItemsByItemId(itemId, warehouseId, warehouse.getBillingWarehouseId(),0);
6467 amar.kumar 119
	}
6484 amar.kumar 120
 
16411 manish.sha 121
	public List<InventoryItem> getCurrentNonSerializedItemsByItemIdWithGrnId(long itemId, long warehouseId, long purchaseId) throws InventoryServiceException, TException {
122
		InventoryService.Client inventoryClient = new InventoryClient().getClient();
123
		Warehouse warehouse = inventoryClient.getWarehouse(warehouseId);
124
		return inventoryItemMapper.getCurrentNonSerializedItemsByItemId(itemId, warehouseId, warehouse.getBillingWarehouseId(),purchaseId);
125
	}
126
 
10864 manish.sha 127
	public List<InventoryItem> getNonSerializedItemsForBadInventory(long itemId, long currentWarehouseId, long physicalWarehouseId){
128
		return inventoryItemMapper.getNonSerializedItemsForBadInventory(itemId, currentWarehouseId, physicalWarehouseId);
129
	}
130
 
6484 amar.kumar 131
	public List<Map<String, Integer>> getCurrentSerializedInventory() {
132
		return inventoryItemMapper.getCurrentSerializedInventory();
133
	}
134
 
135
	public List<Map<String, Integer>> getCurrentNonSerializedInventory() {
136
		return inventoryItemMapper.getCurrentNonSerializedInventory();
137
	}
6558 amar.kumar 138
 
139
	public void markItemAsLost(long id, long currentQuantity) {
140
		inventoryItemMapper.markItemAsLost(id, currentQuantity);
141
 
142
	}
7410 amar.kumar 143
 
144
	/*public void markTransferLotAsRecieved(long id) {
145
		inventoryItemMapper.markTransferLotAsRecieved(id);
146
	}*/
147
 
148
	public List<InventoryItem> getInventoryItemsForTransferLot(long id) {
149
		return inventoryItemMapper.getInventoryItemsForTransferLot(id);
150
	}
151
 
152
	/*public InventoryItem getNonSeralizedInventoryItemForPhysicalWarehouse(
153
			String itemNumber, long itemId, long physicalWarehouseId) {
154
		return  inventoryItemMapper.getNonSeralizedInventoryItemForPhysicalWarehouse(itemNumber, itemId, physicalWarehouseId);
155
	}*/
156
 
157
	public long getCurrentQuantityForNonSerializedItemInPhysicalWarehouse(
158
			long itemId, long physicalWarehouseId) {
159
		return inventoryItemMapper.getCurrentQuantityForNonSerializedItemInPhysicalWarehouse(itemId, physicalWarehouseId);
160
	}
161
 
162
	public List<InventoryItem> getCurrentNonSerializedItemsByItemIdInPhysicalWarehouse(
163
			long itemId, long physicalWarehouseId) {
164
		return inventoryItemMapper.getCurrentNonSerializedItemsByItemIdInPhysicalWarehouse(itemId, physicalWarehouseId);
165
	}
7574 amar.kumar 166
 
167
	public long getCurrentQuantityForNonSerializedInTransitItemInPhysicalWarehouse(
168
			long itemId, long physicalWarehouseId) {
169
		return inventoryItemMapper.getCurrentQuantityForNonSerializedInTransitItemInPhysicalWarehouse(
170
				itemId, physicalWarehouseId);
171
	}
7613 amar.kumar 172
 
173
	public List<InTransitInventory> getInTransitInventory(long originWarehouseId) {
174
		List<InTransitInventory> t_InTransitInventories = new ArrayList<InTransitInventory>();
175
		for(in.shop2020.warehouse.domain.InTransitInventory intransitInventory :inventoryItemMapper.getInTransitInventory(originWarehouseId)) {
176
			t_InTransitInventories.add(intransitInventory.toThriftObject());
177
		}
178
		return t_InTransitInventories;
179
	}
9129 amar.kumar 180
 
181
	public List<InventoryItem> getCurrentInTransitInventoryInPhysicalWarehouse(
182
			long itemId, long originWarehouseId) {
183
		return inventoryItemMapper.getCurrentInTransitInventoryInPhysicalWarehouse(itemId, originWarehouseId);
184
	}
6484 amar.kumar 185
 
10120 manish.sha 186
	public List<InventoryItem> getTransferLotItemsForMarkReceive(
187
			long transferLotId, ScanType scanType) {
188
		return inventoryItemMapper.getTransferLotItemsForMarkReceive(transferLotId,scanType);
189
	}
10215 amar.kumar 190
 
191
	public List<Long> getEmptyGrnsByDate(Date startDate, Date endDate) {
192
		List<Long> allGrns = inventoryItemMapper.getAllGrnsByDate(startDate, endDate);
193
		List<Long> nonEmptyGrns = inventoryItemMapper.getNonEmptyGrnsByDate(startDate, endDate);
194
 
195
		List<Long> emptyGrnsList = new ArrayList<Long>(10);
196
 
197
		Set<Long> emptyGrns = new HashSet<Long>();
198
		emptyGrns.addAll(allGrns);
199
		emptyGrns.removeAll(nonEmptyGrns);
200
 
201
		emptyGrnsList.addAll(emptyGrns);
202
		return emptyGrnsList;
203
	}
10407 amar.kumar 204
 
205
	public InventoryItem getSellableBadNonSerializedItem(long itemId, String itemNumber, long physicalWarehouseId) {
206
		return inventoryItemMapper.getSellableBadNonSerializedItem(itemId, itemNumber, physicalWarehouseId);
207
 
208
	}
10120 manish.sha 209
 
10689 manish.sha 210
	public List<InventoryItem> getInventoryItemScannedInForPO(long itemId, List<Long> purchaseIds) {
211
		return inventoryItemMapper.getInventoryItemScannedInForPO(itemId, purchaseIds);
212
	}
213
 
21617 amit.gupta 214
	public List<InventoryItem> getInventoryItemsBySerailNumbers(List<String> serialNumbers) {
215
		List<InventoryItem> inventoryItems = inventoryItemMapper.getInventoryItemsBySerailNumbers(serialNumbers);
216
		Map<String, InventoryItem> map = new HashMap<String, InventoryItem>();
217
		for(InventoryItem inventoryItem : inventoryItems){
218
			String serialNumber = inventoryItem.getSerialNumber();
219
			if(map.containsKey(serialNumber)){
220
				InventoryItem savedInventoryItem = map.get(serialNumber);
21927 amit.gupta 221
				if(savedInventoryItem.getId() < inventoryItem.getId()) {
21617 amit.gupta 222
					map.put(serialNumber, inventoryItem);
223
				}
224
			} else {
225
				map.put(serialNumber, inventoryItem);
226
			}
227
		}
228
		return new ArrayList<InventoryItem>(map.values());
229
	}
230
 
10864 manish.sha 231
	public Long getCurrentBadQuantityForItem( long itemId, long currentWarehouseId, long physicalWarehouseId){
232
		return inventoryItemMapper.getCurrentBadQuantityForItem(itemId, currentWarehouseId, physicalWarehouseId);
233
	}
234
 
13504 manish.sha 235
	public Map<Long, Long> getItemsInPurchaseReturn(long purchaseReturnId, ScanType type, String returnTime){		
236
		Map<Integer, Integer> result  = inventoryItemMapper.getItemsInPurchaseReturn(purchaseReturnId, type, returnTime);
10864 manish.sha 237
		Map<Long, Long> purchaseReturnItems = new HashMap<Long, Long>();
238
 
239
		for(Integer itemId : result.keySet()){
240
			Long count = Long.parseLong(((Object)((Map<String,Long>)(Object)result.get(itemId)).get("count")).toString());
241
			purchaseReturnItems.put(new Long(itemId), count);
242
		}
243
		return purchaseReturnItems;
244
	}
14491 manish.sha 245
 
246
	public List<DoaOutInventoryItem> getAllDoaOutInventoryItems(){
247
		return inventoryItemMapper.getAllDoaOutInventoryItems();
248
	}
32594 amit.gupta 249
 
250
	public InventoryItem getInventoryItem(String serialNumber, long billingWarehouseId) {
33291 amit.gupta 251
		return inventoryItemMapper.getInventoryItemFromSerialNumberWarehouse(serialNumber, billingWarehouseId);
32594 amit.gupta 252
	}
4500 mandeep.dh 253
}