Subversion Repositories SmartDukaan

Rev

Rev 21242 | Rev 21247 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

package in.shop2020.hotspot.dashbaord.server;

import in.shop2020.model.v1.order.Order;
import in.shop2020.model.v1.order.TransactionService.Client;
import in.shop2020.thrift.clients.TransactionClient;
import in.shop2020.thrift.clients.WarehouseClient;
import in.shop2020.warehouse.InventoryItem;

import java.io.File;
import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.DataFormatter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


public class ProcessBulkBilling{
        private static  Logger logger = LoggerFactory.getLogger(ProcessBulkBilling.class);

        private String fileName;
        private String logisticsTransactionId;
        private String packageDimensions;
        private List<InventoryItem> inventoryItems;
        private Map<Long, Long> itemQuantityMap= new HashMap<Long, Long>();
        private Map<Long, List<InventoryItem>> inventoryItemMap= new HashMap<Long, List<InventoryItem>>();
        private ArrayList<String> imei_list = new ArrayList<String>();


        ProcessBulkBilling(String fileName, String logisticsTransactionId, String packageDimensions) {
                logger.info("FileName "+fileName+" logisticsTransactionId "+logisticsTransactionId+" packageDimension "+packageDimensions);
                this.fileName = fileName;
                this.logisticsTransactionId = logisticsTransactionId;
                this.packageDimensions = packageDimensions;
        }

        public boolean processReport() {
                try{

                        FileInputStream iFile = new FileInputStream(new File(fileName));
                        HSSFWorkbook workbook = new HSSFWorkbook(iFile);
                        HSSFSheet sheet = workbook.getSheetAt(0);
                        DataFormatter formatter = new DataFormatter();
                        for (int iterator=sheet.getFirstRowNum()+1;iterator<=sheet.getLastRowNum();iterator++){
                                HSSFCell imei_cell = sheet.getRow(iterator).getCell(0);
                                String imei = formatter.formatCellValue(imei_cell).trim();
                                if (imei == null || imei.isEmpty()){
                                        break;
                                }
                                if (imei_list.contains(imei)){
                                        return false;
                                }
                                imei_list.add(imei);
                        }
                        return true;
                }
                catch(Exception e){
                        e.printStackTrace();
                        return false;
                }
        }

        public String checkBillingDetails(){
                List<Order> orders_list;
                try{
                        Client tc = new TransactionClient().getClient();
                        orders_list = tc.getGroupOrdersByLogisticsTxnId(logisticsTransactionId);
                }
                catch(Exception e){
                        e.printStackTrace();
                        return "Service Error!!!";
                }
                long total_quantity = 0;
                for (Order o : orders_list){
                        if (itemQuantityMap.containsKey(o.getLineitems().get(0).getItem_id())){
                                itemQuantityMap.put(o.getLineitems().get(0).getItem_id(), itemQuantityMap.get(o.getLineitems().get(0).getItem_id())+(long)o.getLineitems().get(0).getQuantity());
                        }
                        else{
                                itemQuantityMap.put(o.getLineitems().get(0).getItem_id(), (long)o.getLineitems().get(0).getQuantity());
                        }
                        total_quantity = (long) (total_quantity + o.getLineitems().get(0).getQuantity());
                }
                if (total_quantity != imei_list.size()){
                        return "Quantity and imei mismatch.Supplied imei's not equal to quantity to bill";
                }
                try{
                        in.shop2020.warehouse.WarehouseService.Client wc = new WarehouseClient().getClient();
                        inventoryItems = wc.getInventoryItems(imei_list);
                        for (InventoryItem it : inventoryItems){
                                if (inventoryItemMap.containsKey(it.getItemId())){
                                        inventoryItemMap.get(it.getItemId()).add(it);
                                }
                                else{
                                        List<InventoryItem> it_list = new ArrayList<InventoryItem>();
                                        it_list.add(it);
                                        inventoryItemMap.put(it.getItemId(), it_list);
                                }
                        }
                }
                catch(Exception e){
                        return "Exception while getting inventory items from warehouse";
                }
                logger.info("itemQuantityMap "+itemQuantityMap);
                logger.info("inventoryItemMap "+inventoryItemMap);
                return "success";
        }

}