Commit bb2bd91c authored by vbhosale's avatar vbhosale

changed return type from json object to json array , html code removed from ejb

git-svn-id: http://15.206.35.175/svn/proteus/business-java/trunk@193063 ce508802-f39f-4f6c-b175-0d175dae99d5
parent 4edb5efa
package ibase.dashboard.scm.ejb; package ibase.dashboard.scm.ejb;
import ibase.system.config.ConnDriver;
import ibase.utility.CommonConstants;
import ibase.webitm.ejb.ValidatorEJB;
import ibase.webitm.utility.ITMException;
import java.io.File; import java.io.File;
import java.rmi.RemoteException; import java.rmi.RemoteException;
import java.sql.Connection; import java.sql.Connection;
import java.sql.PreparedStatement; import java.sql.PreparedStatement;
import java.sql.ResultSet; import java.sql.ResultSet;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.*; import java.util.ArrayList;
import java.util.Calendar;
import javax.ejb.Stateless; import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject; import org.json.simple.JSONObject;
import ibase.system.config.ConnDriver;
import ibase.utility.CommonConstants;
import ibase.utility.E12GenericUtility;
import ibase.webitm.ejb.ValidatorEJB;
import ibase.webitm.utility.ITMException;
public class ShortageInventory extends ValidatorEJB implements ShortageInventoryLocal, ShortageInventoryRemote {
@SuppressWarnings({ "unchecked", "unused" })
@Override
// method return type changed form json object to json array by Vinay
public String getAngShortageInventory(String dataSourceName, String siteCodes, String finYear , String fromDate, String toDate)
throws RemoteException, ITMException
{
System.out.println("INSIDE NEW SCM EJB");
String shortageInventoryData = "";
String sql = "", sql1 = "", date_from = "", date_to = "";
String availableQtyStatus = "";
String tran_image = "" , itemCode = "" , siteCode = "" , lotNo = "" , locDescr = "" ,object = "";
String itemDescr = "", siteDescr = "" , pkFieldValue = "";
int pendingQty = 0, pendingValue = 0, pendingValueGlobal = 0, availableQty = 0, avgSalesPerDay = 0, availQtyForNearBy = 0;
int daysInventoryAvail = 0, shortageInventory =0, orderCount = 0, quantity = 0, balanceDays = 0;
Connection con = null;
ConnDriver connDriver = new ConnDriver();
ResultSet rs = null, rs1 = null;
PreparedStatement pstmt = null, pstmt1 = null;
int count=0;
Calendar cal = null;
SimpleDateFormat sdf = null;
StringBuffer rowBuffer = new StringBuffer();
StringBuffer rowBufferForDownload = new StringBuffer();
HashMap<Integer, ArrayList<String>> sortDaysWise = new HashMap<Integer, ArrayList<String>>();
ArrayList<String> valueAgainstDays = new ArrayList<String>();
try
{
System.out.println("Try block of AngInventoryShortage.getAngShortageInventory() dataSourceName: "+dataSourceName);
con = connDriver.getConnectDB(dataSourceName);
connDriver=null;
JSONArray shortageArrJSON = new JSONArray();
System.out.println("ang LOGIN SITE CODE ======= " + siteCodes);
siteCodes = E12GenericUtility.getFormattedProfileId(siteCodes); // Get Formatted Comma Separated Values ('', '' ,'')
System.out.println("ang LOGIN SITE CODE after formatted ======= " + siteCodes);
cal = Calendar.getInstance();
sdf = new SimpleDateFormat("dd-MMM-yy");
@SuppressWarnings("static-access")
int currentDayMonth = cal.DAY_OF_MONTH;
int lastDayMonth = cal.getActualMaximum(Calendar.DATE);
cal = Calendar.getInstance();
//cal.add(cal.MONTH,-1);
//cal.set(Calendar.DATE, cal.getActualMinimum(Calendar.DATE));
System.out.println("get currentDayMonth==="+currentDayMonth+" LastDayMonth========"+lastDayMonth);
System.out.println("Date of today: "+fromDate+" Last day of month: "+toDate);
System.out.println("query 1111111111");
sql = " select site_code , item_code , ROUND(nvl(SUM(quantity) / SUM(DAY),0),0) as avg_sales , lot_no , loc_descr " +
" from ( select h.site_code as site_code,i.item_code as item_code,1 as day, i.lot_no as lot_no , " +
" round(sum(i.quantity__stduom),0) as quantity , despdet.loc_code as loc_code , " +
" (select descr from location where loc_code = despdet.loc_code) as loc_descr " +
" from invoice_trace i, invoice h , DESPATCHDET despdet where i.invoice_id = h.invoice_id and i.DESP_ID = despdet.DESP_ID " +
" and i.DESP_LINE_NO = despdet.LINE_NO " +
" AND TO_DATE(H.CONF_DATE) BETWEEN '"+fromDate+"' " + // TO DO PASS FROM DATE
" AND '"+toDate+"' " + // PASS TO DATE
" AND H.SITE_CODE in " +siteCodes +
" GROUP BY h.site_code , I.ITEM_CODE , I.lot_no , despdet.loc_code) " +
" GROUP BY site_code,ITEM_CODE , lot_no , loc_descr ORDER BY site_code,ITEM_CODE ";
pstmt = con.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs = pstmt.executeQuery();
int rowCount = 0;
rs.last();
rowCount = rs.getRow();
System.out.println("rowCount ==== " + rowCount);
rs.beforeFirst();
while(rs.next())
{
itemCode = checkNull(rs.getString("item_code"));
siteCode = checkNull(rs.getString("site_code"));
lotNo = checkNull(rs.getString("lot_no"));
locDescr = checkNull(rs.getString("loc_descr"));
System.out.println("ITEM CODES =========== " + itemCode);
System.out.println("site CODE =========== " + siteCode);
System.out.println("lot No =========== " + lotNo);
System.out.println("LOC DESCR =========== " + locDescr);
pkFieldValue = itemCode;
avgSalesPerDay = Math.round(checInteger(rs.getString("avg_sales")));
System.out.println("avgSalesPerDay=========== " + avgSalesPerDay);
JSONObject rowData = new JSONObject();
JSONObject countRowData = new JSONObject();
rowData.put("Item_Code", itemCode);
rowData.put("Primary_Field_Value", pkFieldValue);
rowData.put("Avg_Sales_Per_Day", avgSalesPerDay);
rowData.put("Lot_No", lotNo);
rowData.put("Loc_Descr", locDescr);
//For calculating available inventory
sql1 = "SELECT FN_GET_ITMSTK ('"+itemCode+"', '"+siteCode+"') as available_qty from dual";
pstmt1 = con.prepareStatement(sql1);
rs1 = pstmt1.executeQuery();
if(rs1.next())
{
availableQty = Math.round(rs1.getInt("available_qty"));
}
rowData.put("Available_Quantity", availableQty);
System.out.println("Available_Quantity ==== " + availableQty);
rs1.close();
rs1 = null;
pstmt1.close();
pstmt1 = null;
//For calculating available inventoryNumber of Pending orders,Total Pending order quantity,total Pending order value
sql1 = "SELECT SINVENTORY.ITEM_CODE, ITEM.DESCR as ITEM_DESCR, SINVENTORY.SITE_CODE AS SITE_CODE, SITE.DESCR AS SITE_DESCR, SINVENTORY.ORDER_COUNT AS ORDER_COUNT, SINVENTORY.QUANTITY AS QUANTITY, SINVENTORY.PENDING_QTY AS PENDING_QTY, SINVENTORY.PENDING_VALUE AS PENDING_VALUE " +
" FROM " +
" ( " +
" SELECT SORDITEM.ITEM_CODE, " +
" sorditem.site_code, " +
" COUNT(DISTINCT SORDITEM.SALE_ORDER) ORDER_COUNT, " +
" SUM(sorditem.quantity) quantity, " +
" SUM(sorditem.quantity - sorditem.qty_desp) AS pending_qty, " +
" SUM ((sorditem.quantity - sorditem.qty_desp) * sorditem.rate ) AS pending_value " +
" FROM sorder, " +
" sorditem, " +
" sorddet " +
" WHERE ( sorder.sale_order = sorditem.sale_order ) " +
" AND ( sorditem.sale_order = sorddet.sale_order ) " +
" AND ( sorditem.line_no = sorddet.line_no ) " +
" AND ( sorder.confirmed = 'Y' ) " +
" AND ( sorditem.status = 'P' ) " +
" AND ( sorditem.site_code = '"+siteCode+"') " +
" AND ( sorditem.item_code = '"+itemCode+"' ) " +
" GROUP BY sorditem.item_code, " +
" sorditem.site_code " +
" )SINVENTORY, ITEM, SITE " +
" WHERE SINVENTORY.ITEM_CODE = ITEM.ITEM_CODE " +
" AND SINVENTORY.SITE_CODE = SITE.SITE_CODE ";
pstmt1 = con.prepareStatement(sql1);
rs1 = pstmt1.executeQuery();
if(rs1.next())
{
itemDescr = checkNull(rs1.getString("ITEM_DESCR"));
siteCode = checkNull(rs1.getString("SITE_CODE"));
siteDescr = checkNull(rs1.getString("SITE_DESCR"));
orderCount = Math.round(rs1.getInt("ORDER_COUNT"));
quantity = Math.round(rs1.getInt("QUANTITY"));
pendingQty = Math.round(rs1.getInt("PENDING_QTY"));
pendingValue = Math.round(rs1.getInt("PENDING_VALUE"));
object = "images"+ File.separator + "users";
tran_image = CommonConstants.TOMCAT_HOME+"/ibase/CustomMenuImageServlet?fldValue="+itemCode+"&objName="+object+"&ALT_FLD_VALUE="+itemDescr;
}
rowData.put("Image", tran_image);
rowData.put("Item_Descr", itemDescr);
rowData.put("Site_Code", siteCode);
rowData.put("Site_Descr", siteDescr);
rowData.put("Order_Count", orderCount);
rowData.put("Quantity", quantity);
rowData.put("Pending_Quantity", pendingQty);
rowData.put("Pending_Value", pendingValue);
System.out.println("orderCount get==== " + orderCount+" quantity : "+quantity+" pendingValue: "+pendingValue);
rs1.close();
rs1 = null;
pstmt1.close();
pstmt1 = null;
//For calculating Number of days inventory available
daysInventoryAvail = Math.round(availableQty/avgSalesPerDay);
rowData.put("Days_Inventory_Available", daysInventoryAvail);
System.out.println("daysInventoryAvail get=========="+daysInventoryAvail);
//For calculating Near by site stock
String siteCodeFrom = "";
sql1 = "SELECT SITE_CODE__FROM, DISTANCE FROM DIST_INTERSITE_OPTIONS " +
"WHERE SITE_CODE='"+siteCode+"' ORDER BY SITE_CODE ASC,DISTANCE ASC";
pstmt1 = con.prepareStatement(sql1);
rs1 = pstmt1.executeQuery();
if(rs1.next())
{
siteCodeFrom = checkNull(rs1.getString("SITE_CODE__FROM"));
}
System.out.println("siteCodeFrom get=========="+siteCodeFrom);
rs1.close();
rs1 = null;
pstmt1.close();
pstmt1 = null;
sql1 = "SELECT FN_GET_ITMSTK ('"+itemCode+"', '"+siteCodeFrom+"') as available_qty_nearby from dual";
pstmt1 = con.prepareStatement(sql1);
rs1 = pstmt1.executeQuery();
if(rs1.next())
{
availQtyForNearBy = Math.round(rs1.getInt("available_qty_nearby"));
}
rowData.put("Avail_Qty_Near_By", availQtyForNearBy);
System.out.println("availQtyForNearBy get=========="+availQtyForNearBy);
rs1.close();
rs1 = null;
pstmt1.close();
pstmt1 = null;
//For calculating Shortage of inventory
sql1="select case when si.MIN_STK_DAY is null then i.MIN_STK_DAY else " +
"si.MIN_STK_DAY end as balance_days from siteitem si,item i " +
"where si.item_code = i.item_code and si.item_code ='"+itemCode+" ' " +
"and si.site_code ='"+siteCode+"' order by si.MIN_STK_DAY";
pstmt1 = con.prepareStatement(sql1);
rs1 = pstmt1.executeQuery();
if(rs1.next())
{
balanceDays = checInteger(rs1.getString("balance_days"));
}
System.out.println("balanceDays get=========="+balanceDays);
rs1.close();
rs1 = null;
pstmt1.close();
pstmt1 = null;
shortageInventory = Math.round((balanceDays*avgSalesPerDay) - availableQty);
System.out.println("shortageInventory get: "+shortageInventory);
// This available quantity displays available quantity in PC or no shortage tags
if(shortageInventory > 0)
{
availableQtyStatus = availableQty+"(+"+shortageInventory+")pc";
rowData.put("Quantity_Shortage", availableQtyStatus); //Available_Qty
}
else
{
availableQtyStatus = availableQty+"(No shortage)";
rowData.put("Quantity_Shortage", availableQtyStatus);
}
System.out.println("Shortage Inventory RowData "+rowData);
pendingValueGlobal = pendingValueGlobal + pendingValue;
rowData.put("Pending_Value", pendingValueGlobal);
System.out.println("PENDING_VALUE ============ "+pendingValueGlobal);
countRowData.put(count,rowData);
shortageArrJSON.add(rowData);
@Stateless }
public class ShortageInventory extends ValidatorEJB implements ShortageInventoryLocal, ShortageInventoryRemote shortageInventoryData = shortageArrJSON.toString();
{ System.out.println("final data array"+shortageArrJSON);
count++;
}
catch (Exception e)
{
System.out.println("Catch Block of InventoryShortage.getAngShortageInventory()"+e);
e.printStackTrace();
}
finally
{
try
{
if (con != null)
{
if (rs != null)
rs.close();
rs = null;
if (pstmt != null)
pstmt.close();
pstmt = null;
con.close();
con = null;
}
con = null;
} catch (Exception e)
{
e.printStackTrace();
System.out.println("Exception in :InventoryShortage:" + e.getMessage());
throw new ITMException(e);
}
}
return shortageInventoryData;
}
@SuppressWarnings({ "unchecked", "static-access", "unused"}) @SuppressWarnings({ "unchecked", "static-access", "unused"})
public JSONObject getShortageInventory(String dataSourceName , String loginSiteCode , String finYear) throws RemoteException, ITMException public JSONObject getShortageInventory(String dataSourceName , String loginSiteCode , String finYear) throws RemoteException, ITMException
...@@ -82,6 +355,7 @@ public class ShortageInventory extends ValidatorEJB implements ShortageInventory ...@@ -82,6 +355,7 @@ public class ShortageInventory extends ValidatorEJB implements ShortageInventory
while(rs.next()) while(rs.next())
{ {
itemCode = checkNull(rs.getString("item_code")); itemCode = checkNull(rs.getString("item_code"));
System.out.println("aLL ITEM cODES =========== " + itemCode);
pkFieldValue = itemCode; pkFieldValue = itemCode;
avgSalesPerDay = Math.round(checInteger(rs.getString("avg_sales"))); avgSalesPerDay = Math.round(checInteger(rs.getString("avg_sales")));
//For calculating available inventory //For calculating available inventory
...@@ -109,7 +383,7 @@ public class ShortageInventory extends ValidatorEJB implements ShortageInventory ...@@ -109,7 +383,7 @@ public class ShortageInventory extends ValidatorEJB implements ShortageInventory
"and ( sorditem.line_no = sorddet.line_no ) " + "and ( sorditem.line_no = sorddet.line_no ) " +
"and ( sorditem.item_code = item.item_code ) and ( sorder.confirmed = 'Y' ) " + "and ( sorditem.item_code = item.item_code ) and ( sorder.confirmed = 'Y' ) " +
"and ( sorditem.status = 'P' ) AND ( sorditem.site_code='"+loginSiteCode+"') " + "and ( sorditem.status = 'P' ) AND ( sorditem.site_code='"+loginSiteCode+"') " +
"and ( sorditem.item_code='"+itemCode+" ') " + "and ( sorditem.item_code in ('"+itemCode+"') ) " +
"group by sorditem.item_code,item.descr"; "group by sorditem.item_code,item.descr";
pstmt1 = con.prepareStatement(sql1); pstmt1 = con.prepareStatement(sql1);
rs1 = pstmt1.executeQuery(); rs1 = pstmt1.executeQuery();
...@@ -252,7 +526,7 @@ public class ShortageInventory extends ValidatorEJB implements ShortageInventory ...@@ -252,7 +526,7 @@ public class ShortageInventory extends ValidatorEJB implements ShortageInventory
sortDaysWise.put(daysInventoryAvail, valueAgainstDays); sortDaysWise.put(daysInventoryAvail, valueAgainstDays);
} }
rowBufferForDownload.append("</table>"); rowBufferForDownload.append("</table>");
System.out.println("Before Sorting sortDaysWise: "+sortDaysWise.toString()+"\n pendingValueGlobal: "+pendingValueGlobal); System.out.println("Before Sorting sortDaysWise: "+sortDaysWise.toString()+" pendingValueGlobal: "+pendingValueGlobal);
Map<Integer, ArrayList<String>> sortedMap = new TreeMap<Integer, ArrayList<String>>(sortDaysWise); Map<Integer, ArrayList<String>> sortedMap = new TreeMap<Integer, ArrayList<String>>(sortDaysWise);
System.out.println("After Sorting sortedMap: "+sortedMap.toString()); System.out.println("After Sorting sortedMap: "+sortedMap.toString());
for (Map.Entry<Integer, ArrayList<String>> entry : sortedMap.entrySet()) for (Map.Entry<Integer, ArrayList<String>> entry : sortedMap.entrySet())
...@@ -305,6 +579,9 @@ public class ShortageInventory extends ValidatorEJB implements ShortageInventory ...@@ -305,6 +579,9 @@ public class ShortageInventory extends ValidatorEJB implements ShortageInventory
return shortageInvJSON; return shortageInvJSON;
} }
private String checkNull(String input) private String checkNull(String input)
{ {
if (input == null) if (input == null)
...@@ -316,6 +593,7 @@ public class ShortageInventory extends ValidatorEJB implements ShortageInventory ...@@ -316,6 +593,7 @@ public class ShortageInventory extends ValidatorEJB implements ShortageInventory
} }
return input; return input;
} }
private int checInteger(String input) private int checInteger(String input)
{ {
if (input == null || input.length()==0) if (input == null || input.length()==0)
......
package ibase.dashboard.scm.ejb; package ibase.dashboard.scm.ejb;
import java.rmi.RemoteException; import java.rmi.RemoteException;
import javax.ejb.Local;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject; import org.json.simple.JSONObject;
import ibase.webitm.ejb.ValidatorLocal; import ibase.webitm.ejb.ValidatorLocal;
import ibase.webitm.utility.ITMException; import ibase.webitm.utility.ITMException;
@Local
public interface ShortageInventoryLocal extends ValidatorLocal public interface ShortageInventoryLocal extends ValidatorLocal
{ {
//return type changed from json object to json array by Vinay
public String getAngShortageInventory(String dataSourceName , String siteCode , String finYear , String fromDate, String toDate) throws RemoteException, ITMException;
public JSONObject getShortageInventory(String dataSourceName , String siteCode , String finYear) throws RemoteException, ITMException; public JSONObject getShortageInventory(String dataSourceName , String siteCode , String finYear) throws RemoteException, ITMException;
} }
package ibase.dashboard.scm.ejb; package ibase.dashboard.scm.ejb;
import java.rmi.RemoteException; import java.rmi.RemoteException;
import javax.ejb.Remote;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject; import org.json.simple.JSONObject;
import ibase.webitm.ejb.ValidatorRemote; import ibase.webitm.ejb.ValidatorRemote;
import ibase.webitm.utility.ITMException; import ibase.webitm.utility.ITMException;
@Remote
public interface ShortageInventoryRemote extends ValidatorRemote public interface ShortageInventoryRemote extends ValidatorRemote
{ {
//return type changed from json object to json array by Vinay
public String getAngShortageInventory(String dataSourceName , String siteCode , String finYear , String fromDate, String toDate) throws RemoteException, ITMException;
public JSONObject getShortageInventory(String dataSourceName , String siteCode , String finYear) throws RemoteException, ITMException; public JSONObject getShortageInventory(String dataSourceName , String siteCode , String finYear) throws RemoteException, ITMException;
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment