Subversion Repositories SmartDukaan

Rev

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

Rev Author Line No. Line
9761 amar.kumar 1
package in.shop2020.support.controllers;
2
 
3
import in.shop2020.model.v1.catalog.CatalogService;
4
import in.shop2020.model.v1.catalog.EbayItem;
5
import in.shop2020.model.v1.catalog.Item;
6
import in.shop2020.model.v1.inventory.HoldInventoryDetail;
7
import in.shop2020.model.v1.inventory.InventoryService;
8
import in.shop2020.model.v1.inventory.InventoryType;
9
import in.shop2020.model.v1.inventory.ItemInventory;
10
import in.shop2020.model.v1.inventory.Warehouse;
11
import in.shop2020.model.v1.order.OrderSource;
12
import in.shop2020.support.utils.ReportsUtils;
13
import in.shop2020.thrift.clients.CatalogClient;
14
import in.shop2020.thrift.clients.InventoryClient;
15
 
16
import java.io.File;
17
import java.io.FileInputStream;
18
import java.io.IOException;
19
import java.text.SimpleDateFormat;
9766 amar.kumar 20
import java.util.ArrayList;
9761 amar.kumar 21
import java.util.Date;
22
import java.util.HashMap;
23
import java.util.List;
24
import java.util.Map;
25
 
26
import javax.servlet.http.HttpServletRequest;
27
import javax.servlet.http.HttpSession;
28
 
29
import org.apache.commons.io.FileUtils;
30
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
31
import org.apache.poi.ss.usermodel.Cell;
32
import org.apache.poi.ss.usermodel.Row;
33
import org.apache.poi.ss.usermodel.Workbook;
34
import org.apache.struts2.convention.annotation.InterceptorRef;
35
import org.apache.struts2.convention.annotation.InterceptorRefs;
36
import org.apache.struts2.convention.annotation.Result;
37
import org.apache.struts2.convention.annotation.Results;
38
import org.apache.struts2.interceptor.ServletRequestAware;
39
import org.apache.thrift.transport.TTransportException;
40
import org.slf4j.Logger;
41
import org.slf4j.LoggerFactory;
42
 
43
import com.opensymphony.xwork2.ActionSupport;
44
 
45
@SuppressWarnings("serial")
46
@InterceptorRefs({
47
    @InterceptorRef("defaultStack"),
48
    @InterceptorRef("login")
49
})
50
@Results({
51
    @Result(name="authfail", type="redirectAction", params = {"actionName" , "reports"})
52
})
53
public class HoldInventoryController extends ActionSupport implements ServletRequestAware {
54
 
55
	public class ItemStockDetail {
56
		private long itemId;
57
		private long available;
58
		private long reserved;
59
		private long held;
60
 
61
		public ItemStockDetail(long itemId, long available, long reserved,
62
				long held) {
63
			this.itemId = itemId;
64
			this.available = available;
65
			this.reserved = reserved;
66
			this.held = held;
67
		}
68
		public long getItemId() {
69
			return itemId;
70
		}
71
		public void setItemId(long itemId) {
72
			this.itemId = itemId;
73
		}
74
		public long getAvailable() {
75
			return available;
76
		}
77
		public void setAvailable(long available) {
78
			this.available = available;
79
		}
80
		public long getReserved() {
81
			return reserved;
82
		}
83
		public void setReserved(long reserved) {
84
			this.reserved = reserved;
85
		}
86
		public long getHeld() {
87
			return held;
88
		}
89
		public void setHeld(long held) {
90
			this.held = held;
91
		}
92
 
93
	}
94
 
95
	private static Logger logger = LoggerFactory.getLogger(HoldInventoryController.class);
96
 
97
	private static Map<Long, Warehouse> warehouseMap;
98
	private static List<Warehouse> warehouses;
99
	private List<HoldInventoryDetail> holdInventoryDetails;
100
	private Map<Long, Item> itemMap;
101
	private Map<Long, ItemStockDetail> itemAvailabilityMap;
102
 
103
	private long source;
104
	private long itemId;
105
	private long warehouseId;
106
	private long heldQuantity;
107
 
108
	private HttpServletRequest request;
109
    private HttpSession session;
110
 
111
    private String errorMsg = "";
112
 
113
    static {
114
    	try {
115
    		InventoryService.Client inventoryClient = new InventoryClient().getClient();
116
    		warehouseMap = new HashMap<Long, Warehouse>(100);
117
    		warehouses = inventoryClient.getWarehouses(null, InventoryType.GOOD, 0, 0, 0);
118
    		for (Warehouse warehouse : warehouses) {
119
    			warehouseMap.put(warehouse.getId(), warehouse);
120
    		}
121
    	} catch (Exception e) {
122
    		try {
123
	    		InventoryService.Client inventoryClient = new InventoryClient().getClient();
124
	    		warehouses = inventoryClient.getWarehouses(null, InventoryType.GOOD, 0, 0, 0);
125
	    		for (Warehouse warehouse : warehouses) {
126
	    			warehouseMap.put(warehouse.getId(), warehouse);
127
	    		}
128
    		} catch (Exception e1) {
129
    			e1.printStackTrace();
130
    			//TODO log statement
131
    		}
132
    	}
133
 
134
    }
135
 
136
    public String index() {
137
        if(!ReportsUtils.canAccessReport((Long)session.getAttribute(ReportsUtils.ROLE), "/hold-inventory"))
138
            return "authfail";
139
 
140
        try {
141
        	itemMap = new HashMap<Long, Item>(50);
142
        	itemAvailabilityMap = new HashMap<Long, ItemStockDetail>(); 
143
			InventoryService.Client inventoryClient = new InventoryClient().getClient();
144
			holdInventoryDetails = inventoryClient.getHoldInventoryDetails(0,0,0);
9766 amar.kumar 145
			List<Integer> tobeRemovedIndexes = new ArrayList<Integer>();
146
			for(HoldInventoryDetail tmpHoldInventoryDetail : holdInventoryDetails) {
147
				if (tmpHoldInventoryDetail.getHeld()<=0) {
148
					tobeRemovedIndexes.add(holdInventoryDetails.indexOf(tmpHoldInventoryDetail));
149
				}
150
			}
151
			for (Integer index : tobeRemovedIndexes) {
9767 amar.kumar 152
				holdInventoryDetails.remove(index.intValue());
9766 amar.kumar 153
			}
154
 
9761 amar.kumar 155
			Map<Long, ItemInventory> itemInventoryMap = inventoryClient.getInventorySnapshot(0);
156
			CatalogService.Client catalogClient = new CatalogClient().getClient();
157
			for (HoldInventoryDetail holdInventoryDetail : holdInventoryDetails) {
158
				if(itemMap.containsKey(holdInventoryDetail.getItem_id())) {
159
					continue;
160
				}
161
				long availability = 0;
162
				long reserved = 0;
163
				long held = 0;
164
				Item item = catalogClient.getItem(holdInventoryDetail.getItem_id());
165
				Map<Long, Long> itemAvailability = itemInventoryMap.get(holdInventoryDetail.getItem_id()).getAvailability();
166
				Map<Long, Long> itemReserved = itemInventoryMap.get(holdInventoryDetail.getItem_id()).getReserved();
167
				Map<Long, Long> itemHeld = itemInventoryMap.get(holdInventoryDetail.getItem_id()).getHeld();
168
 
169
				for (Long availabilityKey : itemAvailability.keySet()) {
170
					if (availabilityKey!=16) {
171
						availability += itemAvailability.get(availabilityKey);
172
					}
173
				}
174
				for (Long reservedKey : itemReserved.keySet()) {
175
					if (reservedKey!=16) {
176
						reserved += itemReserved.get(reservedKey);
177
					}
178
				}
179
				for (Long heldKey : itemHeld.keySet()) {
180
					if (heldKey!=16) {
181
						held += itemHeld.get(heldKey);
182
					}
183
				}
184
				ItemStockDetail itemStockDetail = new ItemStockDetail(holdInventoryDetail.getItem_id(), availability, reserved, held);
185
				itemAvailabilityMap.put(holdInventoryDetail.getItem_id(), itemStockDetail);
186
				itemMap.put(holdInventoryDetail.getItem_id(), item);
187
			}
188
 
189
		} catch (Exception e) {
190
			// TODO Auto-generated catch block
9766 amar.kumar 191
			e.printStackTrace(); 
9761 amar.kumar 192
		}
193
 
194
        return "index";
195
    }
196
 
197
    public String create() throws Exception{
198
    	InventoryService.Client inventoryClient = new InventoryClient().getClient();
199
    	inventoryClient.addUpdateHoldInventory(itemId, warehouseId, heldQuantity, source);
200
    	return index();
201
    }
202
 
203
	@Override
204
	public void setServletRequest(HttpServletRequest request) {
205
		this.request = request;
206
        this.session = request.getSession();
207
	}
208
 
209
	public String getErrorMsg() {
210
		return errorMsg;
211
	}
212
 
213
	public void setErrorMsg(String errorMsg) {
214
		this.errorMsg = errorMsg;
215
	}
216
 
217
	public static Map<Long, Warehouse> getWarehouseMap() {
218
		return warehouseMap;
219
	}
220
 
221
	public static List<Warehouse> getWarehouses() {
222
		return warehouses;
223
	}
224
 
225
	public List<HoldInventoryDetail> getHoldInventoryDetails() {
226
		return holdInventoryDetails;
227
	}
228
 
229
	public long getSource() {
230
		return source;
231
	}
232
 
233
	public void setSource(long source) {
234
		this.source = source;
235
	}
236
 
237
	public long getItemId() {
238
		return itemId;
239
	}
240
 
241
	public void setItemId(long itemId) {
242
		this.itemId = itemId;
243
	}
244
 
245
	public long getWarehouseId() {
246
		return warehouseId;
247
	}
248
 
249
	public void setWarehouseId(long warehouseId) {
250
		this.warehouseId = warehouseId;
251
	}
252
 
253
	public long getHeldQuantity() {
254
		return heldQuantity;
255
	}
256
 
257
	public void setHeldQuantity(long heldQuantity) {
258
		this.heldQuantity = heldQuantity;
259
	}
260
 
261
	public Map<Long, Item> getItemMap() {
262
		return itemMap;
263
	}
264
 
265
	public void setItemMap(Map<Long, Item> itemMap) {
266
		this.itemMap = itemMap;
267
	}
268
 
269
	public Map<Long, ItemStockDetail> getItemAvailabilityMap() {
270
		return itemAvailabilityMap;
271
	}
272
 
273
	public void setItemAvailabilityMap(
274
			Map<Long, ItemStockDetail> itemAvailabilityMap) {
275
		this.itemAvailabilityMap = itemAvailabilityMap;
276
	}
277
 
278
	public String getSource(long source) {
9768 amar.kumar 279
		if(source == 0) {
280
			return "DONT-SELL";
281
		}
9761 amar.kumar 282
		return OrderSource.findByValue(new Long(source).intValue()).toString();
283
	}
284
}