Subversion Repositories SmartDukaan

Rev

Rev 9768 | 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);
9769 amar.kumar 145
			List<HoldInventoryDetail> tobeRemovedHoldInventories = new ArrayList<HoldInventoryDetail>();
9766 amar.kumar 146
			for(HoldInventoryDetail tmpHoldInventoryDetail : holdInventoryDetails) {
147
				if (tmpHoldInventoryDetail.getHeld()<=0) {
9769 amar.kumar 148
					tobeRemovedHoldInventories.add(tmpHoldInventoryDetail);
9766 amar.kumar 149
				}
150
			}
9769 amar.kumar 151
			holdInventoryDetails.removeAll(tobeRemovedHoldInventories);
9766 amar.kumar 152
 
9761 amar.kumar 153
			Map<Long, ItemInventory> itemInventoryMap = inventoryClient.getInventorySnapshot(0);
154
			CatalogService.Client catalogClient = new CatalogClient().getClient();
155
			for (HoldInventoryDetail holdInventoryDetail : holdInventoryDetails) {
156
				if(itemMap.containsKey(holdInventoryDetail.getItem_id())) {
157
					continue;
158
				}
159
				long availability = 0;
160
				long reserved = 0;
161
				long held = 0;
162
				Item item = catalogClient.getItem(holdInventoryDetail.getItem_id());
163
				Map<Long, Long> itemAvailability = itemInventoryMap.get(holdInventoryDetail.getItem_id()).getAvailability();
164
				Map<Long, Long> itemReserved = itemInventoryMap.get(holdInventoryDetail.getItem_id()).getReserved();
165
				Map<Long, Long> itemHeld = itemInventoryMap.get(holdInventoryDetail.getItem_id()).getHeld();
166
 
167
				for (Long availabilityKey : itemAvailability.keySet()) {
168
					if (availabilityKey!=16) {
169
						availability += itemAvailability.get(availabilityKey);
170
					}
171
				}
172
				for (Long reservedKey : itemReserved.keySet()) {
173
					if (reservedKey!=16) {
174
						reserved += itemReserved.get(reservedKey);
175
					}
176
				}
177
				for (Long heldKey : itemHeld.keySet()) {
178
					if (heldKey!=16) {
179
						held += itemHeld.get(heldKey);
180
					}
181
				}
182
				ItemStockDetail itemStockDetail = new ItemStockDetail(holdInventoryDetail.getItem_id(), availability, reserved, held);
183
				itemAvailabilityMap.put(holdInventoryDetail.getItem_id(), itemStockDetail);
184
				itemMap.put(holdInventoryDetail.getItem_id(), item);
185
			}
186
 
187
		} catch (Exception e) {
188
			// TODO Auto-generated catch block
9766 amar.kumar 189
			e.printStackTrace(); 
9761 amar.kumar 190
		}
191
 
192
        return "index";
193
    }
194
 
195
    public String create() throws Exception{
196
    	InventoryService.Client inventoryClient = new InventoryClient().getClient();
197
    	inventoryClient.addUpdateHoldInventory(itemId, warehouseId, heldQuantity, source);
198
    	return index();
199
    }
200
 
201
	@Override
202
	public void setServletRequest(HttpServletRequest request) {
203
		this.request = request;
204
        this.session = request.getSession();
205
	}
206
 
207
	public String getErrorMsg() {
208
		return errorMsg;
209
	}
210
 
211
	public void setErrorMsg(String errorMsg) {
212
		this.errorMsg = errorMsg;
213
	}
214
 
215
	public static Map<Long, Warehouse> getWarehouseMap() {
216
		return warehouseMap;
217
	}
218
 
219
	public static List<Warehouse> getWarehouses() {
220
		return warehouses;
221
	}
222
 
223
	public List<HoldInventoryDetail> getHoldInventoryDetails() {
224
		return holdInventoryDetails;
225
	}
226
 
227
	public long getSource() {
228
		return source;
229
	}
230
 
231
	public void setSource(long source) {
232
		this.source = source;
233
	}
234
 
235
	public long getItemId() {
236
		return itemId;
237
	}
238
 
239
	public void setItemId(long itemId) {
240
		this.itemId = itemId;
241
	}
242
 
243
	public long getWarehouseId() {
244
		return warehouseId;
245
	}
246
 
247
	public void setWarehouseId(long warehouseId) {
248
		this.warehouseId = warehouseId;
249
	}
250
 
251
	public long getHeldQuantity() {
252
		return heldQuantity;
253
	}
254
 
255
	public void setHeldQuantity(long heldQuantity) {
256
		this.heldQuantity = heldQuantity;
257
	}
258
 
259
	public Map<Long, Item> getItemMap() {
260
		return itemMap;
261
	}
262
 
263
	public void setItemMap(Map<Long, Item> itemMap) {
264
		this.itemMap = itemMap;
265
	}
266
 
267
	public Map<Long, ItemStockDetail> getItemAvailabilityMap() {
268
		return itemAvailabilityMap;
269
	}
270
 
271
	public void setItemAvailabilityMap(
272
			Map<Long, ItemStockDetail> itemAvailabilityMap) {
273
		this.itemAvailabilityMap = itemAvailabilityMap;
274
	}
275
 
276
	public String getSource(long source) {
9768 amar.kumar 277
		if(source == 0) {
278
			return "DONT-SELL";
279
		}
9761 amar.kumar 280
		return OrderSource.findByValue(new Long(source).intValue()).toString();
281
	}
282
}