Commit 9d6f1612 authored by vvengurlekar's avatar vvengurlekar

AttendanceCompliance.java

AttendanceComplianceLocal.java
AttendanceComplianceRemote.java
PlanVsActual.java - Attendance complience and plan vs actual(todays call) dashboard change as per CLM 1Jan 18(2) ppt


git-svn-id: http://15.206.35.175/svn/proteus/business-java/trunk@179113 ce508802-f39f-4f6c-b175-0d175dae99d5
parent 59a7c8bb
package ibase.dashboard.sfa.ejb; package ibase.dashboard.sfa.ejb;
import ibase.system.config.ConnDriver; import ibase.system.config.ConnDriver;
import ibase.utility.CommonConstants;
import ibase.webitm.ejb.ValidatorEJB; import ibase.webitm.ejb.ValidatorEJB;
import ibase.webitm.utility.GenericUtility; import ibase.webitm.utility.GenericUtility;
import ibase.webitm.utility.ITMException; import ibase.webitm.utility.ITMException;
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.ArrayList;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.ejb.Stateless; import javax.ejb.Stateless;
...@@ -23,7 +29,7 @@ public class AttendanceCompliance extends ValidatorEJB implements AttendanceComp ...@@ -23,7 +29,7 @@ public class AttendanceCompliance extends ValidatorEJB implements AttendanceComp
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public JSONObject getAttendance(String dataSourceName, String empCode) public JSONObject getAttendance(String dataSourceName, String empCode, String viewOptionSelectd)
throws RemoteException, ITMException throws RemoteException, ITMException
{ {
JSONObject rowDataPendingTaskJson = new JSONObject(); JSONObject rowDataPendingTaskJson = new JSONObject();
...@@ -33,81 +39,20 @@ public class AttendanceCompliance extends ValidatorEJB implements AttendanceComp ...@@ -33,81 +39,20 @@ public class AttendanceCompliance extends ValidatorEJB implements AttendanceComp
PreparedStatement pstmt = null; PreparedStatement pstmt = null;
Connection conn = null; Connection conn = null;
ConnDriver connDriver = new ConnDriver(); ConnDriver connDriver = new ConnDriver();
int count = 0; int count = 0, rowCount = 0;
StringBuffer rowBuffer = null;
Map<String, ArrayList<String>> regionWiseAttendanceMap = null;
ArrayList<String> complianceReport = null;
String salesPersCode = "", salesPersName = "", userImagePath = "", tran_image = "";
String state = "", reportHead = "", notReportingDays = "", mobileNo = "";
try try
{ {
SimpleDateFormat convertToDbDate =new SimpleDateFormat(new GenericUtility().getDBDateFormat()); SimpleDateFormat convertToDbDate =new SimpleDateFormat(new GenericUtility().getDBDateFormat());
SimpleDateFormat simpleDateFormat =new SimpleDateFormat(new GenericUtility().getApplDateFormat()); SimpleDateFormat simpleDateFormat =new SimpleDateFormat(new GenericUtility().getApplDateFormat());
//simpleDateFormat.format(convertToDbDate.parse(""));
conn = connDriver.getConnectDB(dataSourceName); conn = connDriver.getConnectDB(dataSourceName);
connDriver = null; connDriver = null;
/*sql_main = " SELECT SALES_PERS, SP_NAME, to_char(LAST_REPORT,'dd/mm/yyyy') AS LAST_REPORT, ROUND(TRUNC(SYSDATE)-TRUNC(LAST_REPORT)) NOT_REPORTED,"
+ " EMP_NAME, MOBILE_NO FROM (SELECT SP.SALES_PERS, SP.SP_NAME,MAX(S.EVENT_DATE) LAST_REPORT,"
+ " (NVL(TRIM(E1.EMP_FNAME),'')||NVL(TRIM(E1.EMP_MNAME),' ')||NVL(TRIM(E1.EMP_LNAME),'')) EMP_NAME, "
+ " E.MOBILE_NO FROM SPRS_ACT_TRAN S INNER JOIN EMPLOYEE E ON S.SALES_PERS = E.EMP_CODE "
+ " INNER JOIN SALES_PERS SP ON E.EMP_CODE = SP.SALES_PERS LEFT "
+ " OUTER JOIN EMPLOYEE E1 ON E1.EMP_CODE = E.REPORT_TO "
+ " WHERE E.REPORT_TO = '" + empCode + "'"
+ " GROUP BY SP.SALES_PERS, SP.SP_NAME, (NVL(TRIM(E1.EMP_FNAME),'')||NVL(TRIM(E1.EMP_MNAME),' ')||NVL(TRIM(E1.EMP_LNAME),'')), E.MOBILE_NO) A order by to_date(LAST_REPORT)";
*/
/*sql = "SELECT SALES_PERS, sp_name, LAST_REPORT AS LAST_REPORT, ROUND(TRUNC(SYSDATE)-TRUNC(LAST_REPORT)) NOT_REPORTED, " +
"EMP_NAME, mobile_no FROM (SELECT SP.SALES_PERS, SP.SP_NAME, MAX(S.EVENT_DATE) LAST_REPORT, (NVL(TRIM(E1.EMP_FNAME),'') ||NVL(TRIM(E1.EMP_MNAME),' ') ||NVL(TRIM(E1.EMP_LNAME),'')) EMP_NAME, " +
"E.MOBILE_NO, to_char(MAX(S.EVENT_DATE),'dd/mm/yy') LAST_REPORT1 FROM SPRS_ACT_TRAN S INNER JOIN EMPLOYEE E ON S.SALES_PERS = E.EMP_CODE INNER JOIN SALES_PERS SP ON E.EMP_CODE = SP.SALES_PERS LEFT OUTER JOIN EMPLOYEE E1 ON E1.EMP_CODE = E.REPORT_TO " +
//"WHERE E.REPORT_TO = 'G009' " +
"GROUP BY SP.SALES_PERS, SP.SP_NAME, (NVL(TRIM(E1.EMP_FNAME),'') ||NVL(TRIM(E1.EMP_MNAME),' ') ||NVL(TRIM(E1.EMP_LNAME),'')), E.MOBILE_NO ) a order by last_report desc ";
sql_local = "SELECT SALES_PERS, sp_name, TRUNC(LAST_REPORT )AS LAST_REPORT, " +
"ROUND(TRUNC(SYSDATE)-TRUNC(LAST_REPORT)) NOT_REPORTED, EMP_NAME, mobile_no FROM (SELECT SP.SALES_PERS, SP.SP_NAME, MAX(S.EVENT_DATE) LAST_REPORT, (NVL(TRIM(E1.EMP_FNAME),'') ||NVL(TRIM(E1.EMP_MNAME),' ') ||NVL(TRIM(E1.EMP_LNAME),'')) EMP_NAME, " +
"E.MOBILE_NO, TO_CHAR(MAX(S.EVENT_DATE),'dd/mm/yy') LAST_REPORT1 FROM SPRS_ACT_TRAN S INNER JOIN EMPLOYEE E ON S.SALES_PERS = E.EMP_CODE INNER JOIN SALES_PERS SP ON E.EMP_CODE = SP.SALES_PERS LEFT OUTER JOIN EMPLOYEE E1 ON E1.EMP_CODE = E.REPORT_TO " +
"WHERE E.REPORT_TO = 'G009' " +
"GROUP BY SP.SALES_PERS, SP.SP_NAME, (NVL(TRIM(E1.EMP_FNAME),'') ||NVL(TRIM(E1.EMP_MNAME),' ') ||NVL(TRIM(E1.EMP_LNAME),'')), E.MOBILE_NO ) a order by trunc(last_report) desc ";
*/
/*sql_160316 = " select A.SALES_PERS, SP.SP_NAME, A.LAST_REPORT, " +
" ROUND(TRUNC(sysdate)-TRUNC(A.LAST_REPORT)) NOT_REPORTED, I.DESCR ITEM_SERIES," +
" E.HOBBY1 REGION, E.CUR_STATE STATE, (NVL(TRIM(E1.EMP_FNAME),'')||NVL(TRIM(E1.EMP_MNAME),' ')||NVL(TRIM(E1.EMP_LNAME),'')) EMP_NAME, E.MOBILE_NO " +
" FROM (SELECT t.SALES_PERS,Max(T.EVENT_DATE) LAST_REPORT FROM SPRS_ACT_TRAN T " +
" WhERE T.SALEs_PERS IN (SELECT S.SALES_pERS FROM SALES_PErS S INNER JOIN EMPLOYEE E ON S.SALES_PERS = E.EMP_CODE " +
" WHERE S.ACTIVE_YN='Y' " +
" start with e.emp_code = '" + empCode + "' " +
" connect by prior E.EMP_CODE = E.REPORT_TO) " +
" GRoup by t.SALES_PERS)A INNER JOIN SALES_PERS SP ON A.SALES_PERS = SP.SALES_PERS INNER JOIN EMPLOYEE E ON SP.SALES_PERS = E.EMP_CODE INNER JOIN ITEMSER I ON I.ITEM_SER=SP.ITEM_SER LEFT OUTER JOIN EMPLOYEE E1 ON E1.EMP_CODE = E.REPORT_TO ";
*/
/*Sql Changes on 150316*/
/*sql = " select A.SALES_PERS, SP.SP_NAME, A.LAST_REPORT, ROUND(TRUNC(sysdate)-TRUNC(A.LAST_REPORT)) " +
" NOT_REPORTED_DAYS," +
" I.DESCR DIVISION , E.HOBBY1 REGION, S.DESCR STATE, (NVL(TRIM(E1.EMP_FNAME),'')||NVL(TRIM(E1.EMP_MNAME),' ')||NVL(TRIM(E1.EMP_LNAME),'')) EMP_NAME," +
" E.MOBILE_NO FROM (SELECT t.SALES_PERS,Max(T.EVENT_DATE) LAST_REPORT " +
" FROM SPRS_ACT_TRAN T WhERE T.SALEs_PERS IN (SELECT S.SALES_pERS " +
" FROM SALES_PErS S INNER JOIN EMPLOYEE E ON S.SALES_PERS = E.EMP_CODE " +
" WHERE S.ACTIVE_YN='Y' " +
" start with e.emp_code = '" + empCode + "' " +
" connect by prior E.EMP_CODE = E.REPORT_TO) " +
" GRoup by t.SALES_PERS)A INNER JOIN SALES_PERS SP ON A.SALES_PERS = SP.SALES_PERS INNER JOIN EMPLOYEE E ON SP.SALES_PERS = E.EMP_CODE INNER JOIN ITEMSER I ON I.ITEM_SER=SP.ITEM_SER LEFT OUTER JOIN EMPLOYEE E1 ON E1.EMP_CODE = E.REPORT_TO LEFT OUTER JOIN STATE S ON S.STATE_CODE = E.CUR_STATE ";
*/
/*Final SQL On dated 160316 /*sql = " SELECT A.SALES_PERS, SP.SP_NAME, A.LAST_REPORT, ROUND(TRUNC(sysdate)-TRUNC(A.LAST_REPORT)) NOT_REPORTED_DAYS," +
sql = " select A.SALES_PERS, SP.SP_NAME, A.LAST_REPORT, ROUND(TRUNC(sysdate)-TRUNC(A.LAST_REPORT)) NOT_REPORTED_DAYS, " +
" I.DESCR DIVISION , E.HOBBY1 REGION, S.DESCR STATE, (NVL(TRIM(E1.EMP_FNAME),'')||NVL(TRIM(E1.EMP_MNAME),' ')||NVL(TRIM(E1.EMP_LNAME),'')) EMP_NAME, E.MOBILE_NO " +
" FROM ( SELECT t.SALES_PERS,Max(T.EVENT_DATE) LAST_REPORT " +
" FROM SPRS_ACT_TRAN T " +
" WhERE T.SALEs_PERS IN ( SELECT S.SALES_pERS FROM SALES_PErS S " +
" INNER JOIN EMPLOYEE E ON S.SALES_PERS = E.EMP_CODE " +
//" WHERE S.ACTIVE_YN='Y' " +
//" start with e.emp_code = '" + empCode + "' " +
//" connect by prior E.EMP_CODE = E.REPORT_TO " +
" )AND T.CONFIRMED='Y' " +
" GRoup by t.SALES_PERS )A INNER JOIN SALES_PERS SP ON A.SALES_PERS = SP.SALES_PERS INNER JOIN EMPLOYEE E ON SP.SALES_PERS = E.EMP_CODE " +
" INNER JOIN ITEMSER I ON I.ITEM_SER=SP.ITEM_SER LEFT OUTER JOIN EMPLOYEE E1 ON E1.EMP_CODE = E.REPORT_TO LEFT OUTER JOIN STATE S ON S.STATE_CODE = E.CUR_STATE ";
*/
/*Final SQL After E.STATUS ='Y' changes in SQL On dated 050516*/
sql = " SELECT A.SALES_PERS, SP.SP_NAME, A.LAST_REPORT, ROUND(TRUNC(sysdate)-TRUNC(A.LAST_REPORT)) NOT_REPORTED_DAYS," +
" I.DESCR DIVISION , E.HOBBY1 REGION, S.DESCR STATE, (NVL(TRIM(E1.EMP_FNAME),'') ||NVL(TRIM(E1.EMP_MNAME),' ') ||NVL(TRIM(E1.EMP_LNAME),'')) EMP_NAME, " + " I.DESCR DIVISION , E.HOBBY1 REGION, S.DESCR STATE, (NVL(TRIM(E1.EMP_FNAME),'') ||NVL(TRIM(E1.EMP_MNAME),' ') ||NVL(TRIM(E1.EMP_LNAME),'')) EMP_NAME, " +
" E.MOBILE_NO FROM (SELECT t.SALES_PERS, MAX(T.EVENT_DATE) LAST_REPORT " + " E.MOBILE_NO FROM (SELECT t.SALES_PERS, MAX(T.EVENT_DATE) LAST_REPORT " +
" FROM SPRS_ACT_TRAN T " + " FROM SPRS_ACT_TRAN T " +
...@@ -121,38 +66,145 @@ public class AttendanceCompliance extends ValidatorEJB implements AttendanceComp ...@@ -121,38 +66,145 @@ public class AttendanceCompliance extends ValidatorEJB implements AttendanceComp
" INNER JOIN EMPLOYEE E ON SP.SALES_PERS = E.EMP_CODE " + " INNER JOIN EMPLOYEE E ON SP.SALES_PERS = E.EMP_CODE " +
" INNER JOIN ITEMSER I ON I.ITEM_SER=SP.ITEM_SER LEFT " + " INNER JOIN ITEMSER I ON I.ITEM_SER=SP.ITEM_SER LEFT " +
" OUTER JOIN EMPLOYEE E1 ON E1.EMP_CODE = E.REPORT_TO " + " OUTER JOIN EMPLOYEE E1 ON E1.EMP_CODE = E.REPORT_TO " +
" LEFT OUTER JOIN STATE S ON S.STATE_CODE = E.CUR_STATE "; " LEFT OUTER JOIN STATE S ON S.STATE_CODE = E.CUR_STATE ";*/
sql = "SELECT A.SALES_PERS, SP.SP_NAME, A.LAST_REPORT, " +
"ROUND(TRUNC(sysdate)-TRUNC(A.LAST_REPORT)) NOT_REPORTED_DAYS, I.DESCR DIVISION , " +
"E.HOBBY1 REGION, S.DESCR STATE, (NVL(TRIM(E1.EMP_FNAME),'') ||NVL(TRIM(E1.EMP_MNAME),' ')" +
" ||NVL(TRIM(E1.EMP_LNAME),'')) EMP_NAME, E.MOBILE_NO FROM (SELECT t.SALES_PERS, " +
" MAX(T.EVENT_DATE) LAST_REPORT FROM SPRS_ACT_TRAN T WHERE T.SALEs_PERS IN " +
"(SELECT S.SALES_pERS FROM SALES_PErS S INNER JOIN EMPLOYEE E ON " +
"S.SALES_PERS = E.EMP_CODE WHERE E.STATUS ='Y' START WITH e.emp_code = '" + empCode + "' " +
"CONNECT BY prior E.EMP_CODE = E.REPORT_TO ) AND T.CONFIRMED='Y' " +
"GROUP BY t.SALES_PERS )A INNER JOIN SALES_PERS SP ON A.SALES_PERS = SP.SALES_PERS " +
"INNER JOIN EMPLOYEE E ON SP.SALES_PERS = E.EMP_CODE INNER JOIN ITEMSER I " +
"ON I.ITEM_SER=SP.ITEM_SER LEFT OUTER JOIN EMPLOYEE E1 ON E1.EMP_CODE = E.REPORT_TO " +
"LEFT OUTER JOIN STATE S ON S.STATE_CODE = E.CUR_STATE";
System.out.println("sql is =" + sql); System.out.println("sql is =" + sql);
pstmt = conn.prepareStatement(sql); pstmt = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs = pstmt.executeQuery(); rs = pstmt.executeQuery();
rowCount = 0;
while (rs.next()) rs.last();
rowCount = rs.getRow();
rs.beforeFirst();
rowBuffer = new StringBuffer();
if(rowCount == 0)
{
rowBuffer = new StringBuffer("<table id='htmlTable' cellpadding='2' align='center'><tr><td align = 'center' class='gwt-ScrollTable'>No Data to Display</td></tr>");
}
if(viewOptionSelectd != null && viewOptionSelectd.equalsIgnoreCase("JNJ"))
{ {
rowData = new JSONObject(); rowData = new JSONObject();
rowData.put("salespersn", checkNull(rs.getString("SALES_PERS"))); regionWiseAttendanceMap = new LinkedHashMap<String, ArrayList<String>>();
rowData.put("spname", checkNull(rs.getString("SP_NAME"))); complianceReport = new ArrayList<String>();
String dueDate =checkNull(rs.getString("LAST_REPORT")); while (rs.next())
if(dueDate.trim().length()>0) {
{ salesPersCode = checkNull(rs.getString("SALES_PERS"));
rowData.put("lastreport", simpleDateFormat.format(convertToDbDate.parse(dueDate))); salesPersName = checkNull(rs.getString("SP_NAME"));
} String object = "images"+ File.separator + "users";
else state = checkNull(rs.getString("STATE"));
{ reportHead = checkNull(rs.getString("EMP_NAME"));
rowData.put("lastreport",checkNull (rs.getString("LAST_REPORT"))); notReportingDays = checkNull(rs.getString("NOT_REPORTED_DAYS"));
} mobileNo = checkNull(rs.getString("MOBILE_NO"));
userImagePath = "/ibase/CustomMenuImageServlet?fldValue="+salesPersCode+"&object="+object+"&objName="+object+"&ALT_FLD_VALUE="+salesPersName;
rowData.put("notreporteddays", checkNull(rs.getString("NOT_REPORTED_DAYS"))); tran_image = "<img class='cardProdImg2' src='"+userImagePath+"' style='margin-top:-15px;'/>";
rowData.put("division", checkNull(rs.getString("DIVISION"))); String devisonWiseRegion = checkNull(rs.getString("DIVISION"))+" "+checkNull(rs.getString("REGION"));
rowData.put("region", checkNull(rs.getString("REGION")));
rowData.put("state", checkNull(rs.getString("STATE"))); if(regionWiseAttendanceMap.containsKey(devisonWiseRegion))
rowData.put("empname", checkNull(rs.getString("EMP_NAME"))); {
rowData.put("mobileno", checkNull(rs.getString("MOBILE_NO"))); complianceReport.add("<div class='tdMousehover'>" +
rowDataPendingTaskJson.put(Integer.valueOf(count), rowData); "<table border='0' cellpadding='0' cellspacing='1' width='100%' style= 'padding: 2px;margin:auto;'>" +
"<tr class = 'row' id='"+salesPersCode+"' onclick='getRowWisePkValue(this.id)'>" +
"<td width='2%'>"+tran_image+"</td>" +
"<td><table cellpadding='0' cellspacing='0' width='70%' style='padding-left:5px;'>" +
"<tr><td><table cellpadding='0' cellspacing='1'>" +
"<tr><td><font style='font-size:14px;'>"+salesPersName+" ("+salesPersCode+") "+"</font></td></tr>" +
"</table></td></tr>" +
"<tr><td><table cellpadding='0' cellspacing='1'>" +
"<tr><td><font style='font-size:13px;'> "+state+", "+mobileNo+" </font></td>" +
//"<td style='padding-left:20px;'><font style='font-size:13px;'> near by "+availQtyForNearBy+"pc </font></td>" +
"</tr>" +
"</table></td></tr>" +
"<tr><td ><table cellpadding='0' cellspacing='1'>" +
"<tr><td class='defaultIconSubTitle'><font style='font-size:11px;'>Reporting Head: ("+reportHead+") </font></td>" +
//"<td class='defaultIconSubTitle' style='padding-left:20px;'><font style='font-size:11px;'> "+pendingValue+"INR </font></td>" +
"</tr>" +
"</table></td></tr>" +
"</table></td>" +
"<td align='right' style='padding-right:10px;'><div style='margin-top:-15px;'> "+notReportingDays+" days </div></td></tr></table></div>");
}
else
{
complianceReport = new ArrayList<String>();
complianceReport.add("<div class='tdMousehover'>" +
"<table border='0' cellpadding='0' cellspacing='1' width='100%' style= 'padding: 2px;margin:auto;'>" +
"<tr class = 'row' id='"+salesPersCode+"' onclick='getRowWisePkValue(this.id)'>" +
"<td width='2%'>"+tran_image+"</td>" +
"<td><table cellpadding='0' cellspacing='0' width='70%' style='padding-left:5px;'>" +
"<tr><td><table cellpadding='0' cellspacing='1'>" +
"<tr><td><font style='font-size:14px;'> "+salesPersName+" ("+salesPersCode+") "+"</font></td></tr>" +
"</table></td></tr>" +
"<tr><td><table cellpadding='0' cellspacing='1'>" +
"<tr><td><font style='font-size:13px;'> "+state+", </font></td>" +
"<td style='padding-left:20px;'><font style='font-size:13px;'> "+mobileNo+" </font></td>" +
//"<td style='padding-left:20px;'><font style='font-size:13px;'> near by "+availQtyForNearBy+"pc </font></td>" +
"</tr>" +
"</table></td></tr>" +
"<tr><td ><table cellpadding='0' cellspacing='1'>" +
"<tr><td class='defaultIconSubTitle'><font style='font-size:11px;'>Reporting Head: ("+reportHead+") </font></td>" +
//"<td class='defaultIconSubTitle' style='padding-left:20px;'><font style='font-size:11px;'> "+pendingValue+"INR </font></td>" +
"</tr>" +
"</table></td></tr>" +
"</table></td>" +
"<td align='right' style='padding-right:10px;'><div style='margin-top:-15px;'> "+notReportingDays+" days </div></td></tr></table></div>");
}
regionWiseAttendanceMap.put(devisonWiseRegion, complianceReport);
}
for (Map.Entry<String, ArrayList<String>> entry : regionWiseAttendanceMap.entrySet())
{
System.out.print(entry.getKey() + ": "+entry.getValue());
rowBuffer.append("<div class='defaultTitle'>"+entry.getKey()+"</div>");
ArrayList<String> mapValue = entry.getValue();
for(int i = 0; i < mapValue.size(); i++)
{
rowBuffer.append(mapValue.get(i));
}
}
rowData.put("complianceReportTable", rowBuffer.toString());
rowData.put("exportToExcel", "<td><img src='"+CommonConstants.TOMCAT_HOME+"/ibase/E12BROWSER/FusionChart/images/excel.png' width='20px' height='20px' alt='Export to Excel' id='excel' name='excel' onclick='exportExcel(this.parentNode.id)' align='right' style='padding : 16px;'></td>");
rowDataPendingTaskJson.put(count, rowData);
count++; count++;
} }
else
{
while (rs.next())
{
rowData = new JSONObject();
rowData.put("salespersn", checkNull(rs.getString("SALES_PERS")));
rowData.put("spname", checkNull(rs.getString("SP_NAME")));
String dueDate =checkNull(rs.getString("LAST_REPORT"));
if(dueDate.trim().length()>0)
{
rowData.put("lastreport", simpleDateFormat.format(convertToDbDate.parse(dueDate)));
}
else
{
rowData.put("lastreport",checkNull (rs.getString("LAST_REPORT")));
}
rowData.put("notreporteddays", checkNull(rs.getString("NOT_REPORTED_DAYS")));
rowData.put("division", checkNull(rs.getString("DIVISION")));
rowData.put("region", checkNull(rs.getString("REGION")));
rowData.put("state", checkNull(rs.getString("STATE")));
rowData.put("empname", checkNull(rs.getString("EMP_NAME")));
rowData.put("mobileno", checkNull(rs.getString("MOBILE_NO")));
rowDataPendingTaskJson.put(Integer.valueOf(count), rowData);
count++;
}
}
rs.close(); rs.close();
rs=null; rs=null;
pstmt.close(); pstmt.close();
...@@ -193,6 +245,150 @@ public class AttendanceCompliance extends ValidatorEJB implements AttendanceComp ...@@ -193,6 +245,150 @@ public class AttendanceCompliance extends ValidatorEJB implements AttendanceComp
return rowDataPendingTaskJson; return rowDataPendingTaskJson;
} }
@SuppressWarnings("unchecked")
@Override
public JSONObject getComplianceSummary(String dataSourceName, String loginId, String period) throws RemoteException, ITMException
{
JSONObject rawDataComplianceHirarchyDB2Json = new JSONObject();
JSONObject rowData = null;
String sql = "", code = "";
ResultSet rs = null;
PreparedStatement pstmt = null;
Connection conn = null;
ConnDriver connDriver = new ConnDriver();
Map<String, Integer> complienceSummaryMap = new LinkedHashMap<String, Integer>();
int reportedDays = 0, nonReportedDays = 0, total;
double reportedDaysPerc = 0.0, nonReportedDaysPerc = 0.0;
try
{
System.out.println("Inside AttendanceCompliance for getComplianceSummary Data Soruce Name=: "+dataSourceName+" loginId=:"+ loginId+"---- period=:"+ period);
conn = connDriver.getConnectDB(dataSourceName);
connDriver = null;
if(period != null && period.length()>0)
{
period = period;
}
else
{
sql = "select code from period Where To_Date(Sysdate) Between Fr_Date and To_Date";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
if (rs.next())
{
period = checkNull(rs.getString("code"));
System.out.println("period case of if block: "+period);
}
rs.close();
rs = null;
pstmt.close();
pstmt = null;
}
sql = "SELECT SUM( CASE WHEN REP_NONREP='R' THEN 1 ELSE 0 END ) AS Reported , " +
"SUM( CASE WHEN REP_NONREP='NR' THEN 1 ELSE 0 END ) AS NonReported, " +
"SUM( CASE WHEN REP_NONREP='R' THEN 1 ELSE 0 END + CASE " +
"WHEN REP_NONREP='NR' THEN 1 ELSE 0 END) AS TOTAL FROM " +
"(SELECT SALES_PERS_AV.AVAILABLE_DY , SPRS_ACT_TRAN.ACTIVITY_CODE , " +
"( CASE WHEN ( ROW_NUMBER() OVER ( PARTITION BY SALES_PERS_AV.SALESPERS " +
",AVAILABLE_DY ORDER BY SALES_PERS_AV.SALESPERS ,AVAILABLE_DY ) ) = 1 AND " +
"SPRS_ACT_TRAN.SALES_PERS IS NOT NULL THEN 'R' WHEN ( ROW_NUMBER() " +
"OVER ( PARTITION BY SALES_PERS_AV.SALESPERS ,AVAILABLE_DY " +
"ORDER BY SALES_PERS_AV.SALESPERS ,AVAILABLE_DY ) ) <> 1 " +
"AND SPRS_ACT_TRAN.SALES_PERS IS NOT NULL THEN '-' ELSE 'NR' END ) AS REP_NONREP , " +
" NVL(STRG_CUSTOMER.FIRST_NAME, '') || NVL(STRG_CUSTOMER.MIDDLE_NAME, '') " +
"|| NVL(STRG_CUSTOMER.LAST_NAME, '') AS CUSTOMER_NAME FROM " +
"(SELECT users.CODE AS SALESPERS , AV_DATES.available_dy AS AVAILABLE_DY FROM " +
"( SELECT CODE ,'a' AS a FROM users ) users , (SELECT dt AS available_dy , 'a' AS a " +
"FROM sfa_time WHERE DT BETWEEN TRUNC(TO_DATE(TO_CHAR(TO_DATE('01-' || " +
"SUBSTR('"+period+"', 5, 6) || '-' || SUBSTR('"+period+"', 1, 4), 'DD-MM-YYYY'), 'DD-MM-YYYY')," +
" 'DD-MM-YYYY'), 'MM') AND TRUNC(last_day(TO_DATE(TO_CHAR(TO_DATE('01-' || " +
"SUBSTR('"+period+"', 5, 6) || '-' || SUBSTR('"+period+"', 1, 4), 'DD-MM-YYYY'), 'DD-MM-YYYY')," +
" 'DD-MM-YYYY'))) ) AV_DATES WHERE users.a = AV_DATES.a MINUS " +
"SELECT EMPLOYEE.EMP_CODE AS SALESPERS, holiday.hol_date AS AVAILABLE_DY FROM holiday, " +
" EMPLOYEE WHERE holiday.hol_tblno = EMPLOYEE.hol_tblno " +
"AND holiday.hol_date BETWEEN TRUNC(TO_DATE(TO_CHAR(TO_DATE('01-' || " +
"SUBSTR('"+period+"', 5, 6) || '-' || SUBSTR('"+period+"', 1, 4), 'DD-MM-YYYY'), 'DD-MM-YYYY')," +
" 'DD-MM-YYYY'), 'MM') AND TRUNC(last_day(TO_DATE(TO_CHAR(TO_DATE('01-' " +
" || SUBSTR('"+period+"', 5, 6) || '-' || SUBSTR('"+period+"', 1, 4), 'DD-MM-YYYY')," +
" 'DD-MM-YYYY'), 'DD-MM-YYYY'))) AND NOT EXISTS (SELECT * FROM sprs_act_tran s " +
" WHERE s.sales_pers = employee.emp_code AND s.event_date = holiday.hol_date ) ) " +
"SALES_PERS_AV LEFT OUTER JOIN (SELECT S.* FROM SPRS_ACT_TRAN S " +
"WHERE S.ACTIVITY_CODE <> 'PR' AND S.CONFIRMED = 'Y' ) SPRS_ACT_TRAN " +
"ON SPRS_ACT_TRAN.SALES_PERS = SALES_PERS_AV.SALESPERS " +
"AND SPRS_ACT_TRAN.EVENT_DATE = SALES_PERS_AV.AVAILABLE_DY LEFT OUTER JOIN " +
" ( SELECT S.* FROM STRG_MEET S WHERE S.EVENT_TYPE <> 'PR' )" +
" STRG_MEET ON SPRS_ACT_TRAN.SALES_PERS = STRG_MEET.SALES_PERS " +
" AND SPRS_ACT_TRAN.EVENT_DATE = STRG_MEET.EVENT_DATE AND " +
"SPRS_ACT_TRAN.DCR_ID = STRG_MEET.DCR_ID LEFT OUTER JOIN STRG_CUSTOMER " +
"ON STRG_MEET.STRG_CODE = STRG_CUSTOMER.SC_CODE WHERE SALES_PERS_AV.SALESPERS " +
"IN (SELECT emp_code FROM employee START WITH emp_code = (SELECT emp_code " +
"FROM users WHERE code = '"+loginId+"' AND STATUS='A' ) " +
"CONNECT BY prior emp_code = report_to ) )A ";
pstmt = conn.prepareStatement(sql);
rs = pstmt.executeQuery();
int count = 0;
while (rs.next())
{
reportedDays = Integer.parseInt(checkNumber(rs.getString("Reported")));
nonReportedDays = Integer.parseInt(checkNumber(rs.getString("NonReported")));
total = Integer.parseInt(checkNumber(rs.getString("TOTAL")));
//reportedDaysPerc = (reportedDays/total)*100;
//nonReportedDaysPerc = (100 - reportedDaysPerc);
System.out.println("reportedDays: "+reportedDays+" nonReportedDays: "+nonReportedDays+" total: "+total);
//System.out.println("reportedDaysPerc: "+reportedDaysPerc+" nonReportedDaysPerc: "+nonReportedDaysPerc);
complienceSummaryMap.put("Not Reported", reportedDays);
complienceSummaryMap.put("Reported", nonReportedDays);
}
for (Map.Entry<String, Integer> entry : complienceSummaryMap.entrySet())
{
System.out.print("complienceSummaryMap entry: "+entry.getKey() + ": "+entry.getValue());
rowData = new JSONObject();
rowData.put("reported_nonReported", entry.getKey());
rowData.put("reportedDays", entry.getValue());
rawDataComplianceHirarchyDB2Json.put(count, rowData);
count ++;
}
rs.close();
rs=null;
pstmt.close();
pstmt=null;
}
catch (Exception e)
{
e.printStackTrace();
throw new ITMException(e);
}
finally
{
try
{
if (conn != null)
{
if (rs != null)
rs.close();
rs = null;
if (pstmt != null)
pstmt.close();
pstmt = null;
conn.close();
conn = null;
}
conn = null;
} catch (Exception d)
{
d.printStackTrace();
System.out.println("Exception in :AttendanceCompliance:" + d.getMessage());
throw new ITMException(d);
}
}
System.out.println("AttendanceCompliance JSON String======>>"+rawDataComplianceHirarchyDB2Json.toString());
return rawDataComplianceHirarchyDB2Json;
}
private String checkNull(String str) private String checkNull(String str)
{ {
if (str == null) if (str == null)
...@@ -203,5 +399,14 @@ public class AttendanceCompliance extends ValidatorEJB implements AttendanceComp ...@@ -203,5 +399,14 @@ public class AttendanceCompliance extends ValidatorEJB implements AttendanceComp
return str; return str;
} }
} }
private String checkNumber(String str)
{
if (str == null)
{
return "0";
} else
{
return str;
}
}
} }
...@@ -9,6 +9,7 @@ import org.json.simple.JSONObject; ...@@ -9,6 +9,7 @@ import org.json.simple.JSONObject;
@Local @Local
public abstract interface AttendanceComplianceLocal extends ValidatorLocal public abstract interface AttendanceComplianceLocal extends ValidatorLocal
{ {
public abstract JSONObject getAttendance(String dataSourceName,String empCode)throws RemoteException, ITMException; public abstract JSONObject getAttendance(String dataSourceName,String empCode, String viewOptionSelectd)throws RemoteException, ITMException;
public abstract JSONObject getComplianceSummary(String dataSourceName, String empCode, String period) throws RemoteException, ITMException;
} }
...@@ -9,8 +9,8 @@ import org.json.simple.JSONObject; ...@@ -9,8 +9,8 @@ import org.json.simple.JSONObject;
@Remote @Remote
public abstract interface AttendanceComplianceRemote extends ValidatorRemote public abstract interface AttendanceComplianceRemote extends ValidatorRemote
{ {
public abstract JSONObject getAttendance(String dataSourceName,String empCode) throws RemoteException, ITMException; public abstract JSONObject getAttendance(String dataSourceName,String empCode, String viewOptionSelectd) throws RemoteException, ITMException;
public abstract JSONObject getComplianceSummary(String dataSourceName, String empCode, String period) throws RemoteException, ITMException;
} }
...@@ -781,45 +781,68 @@ public class PlanVsActual extends ValidatorEJB implements PlanVsActualLocal,Plan ...@@ -781,45 +781,68 @@ public class PlanVsActual extends ValidatorEJB implements PlanVsActualLocal,Plan
int count = 0; int count = 0;
String salesPersonCode = "", salesPersonName = "", salesPerson_image = "", salesTranID = "" ; String salesPersonCode = "", salesPersonName = "", salesPerson_image = "", salesPersonTranId = "" ;
String customerCode = "", customerName = "" , customer_Image = ""; String customerCode = "", customerName = "" , customer_Image = "";
StringBuffer rowBuffer = new StringBuffer(); StringBuffer rowBuffer = new StringBuffer();
StringBuffer listedBuffer = new StringBuffer(); StringBuffer listedBuffer = new StringBuffer();
int planned=0, unplanned=0,listed=0, unListed=0; int planned=0, unplanned=0,listed=0, unListed=0;
int totalCalls=0; int totalCalls=0;
String localSQL=""; String currentDate="";
SimpleDateFormat convertToDBDate = null;
try try
{ {
rowBuffer.append("<div>"); rowBuffer.append("<div>");
listedBuffer.append("<div>"); listedBuffer.append("<div>");
salePersons = salePersons == null ? "": salePersons.trim(); salePersons = salePersons == null ? "": salePersons.trim();
dashboardUtility = new DashboardUtility(); dashboardUtility = new DashboardUtility();
salePersons = dashboardUtility.getCommaSeparated(salePersons);
conn = connDriver.getConnectDB(dataSourceName); conn = connDriver.getConnectDB(dataSourceName);
connDriver = null; connDriver = null;
System.out.println(" >>>>>>>> SQL FOR PLANNED DOCTORS >>>>>>> "); convertToDBDate = new SimpleDateFormat("dd-MMM-yy");
currentDate = convertToDBDate.format(Calendar.getInstance().getTime());
if("".equalsIgnoreCase(salePersons) && loginCode != null) System.out.println(" >>>>>>>> SQL FOR PLANNED DOCTORS >>>>>>> salePersons: "+salePersons+" loginCode: "+loginCode+" currentDate: "+currentDate);
if(salePersons == null || salePersons.length()==0)
{ {
salePersons = loginCode;
localSQL = " AND SP.SALES_PERS IN (SELECT EMP_CODE FROM EMPLOYEE START WITH EMP_CODE = (SELECT EMP_CODE FROM USERS WHERE CODE='"+loginCode+"') connect by prior emp_code = report_to)";
}
else {
localSQL = " AND sp.sales_pers in ("+salePersons+") ";
} }
salePersons = dashboardUtility.getCommaSeparated(salePersons);
/*----------Planned doctors visited-----Planned--------*/ /*----------Planned doctors visited-----Planned--------*/
/*sql = "(SELECT TO_CHAR(SM.EVENT_DATE,'DD-MON-YYYY') AS EVENTDATE , " +
"SP.SALES_PERS ,SP.SP_NAME ,SM.STRG_CODE ," +
"INITCAP(SC.FIRST_NAME||' '||SC.MIDDLE_NAME||' '||SC.LAST_NAME )" +
"AS DOCTORNAME ,L.DESCR AS LOCALITY ,SPL.DESCR AS SPECIALITY " +
"FROM SALES_PERS SP INNER JOIN STRG_MEET SM " +
"ON SP.SALES_PERS=SM.SALES_PERS INNER JOIN STRG_CUSTOMER SC " +
"ON SC.SC_CODE=SM.STRG_CODE INNER JOIN LOCALITY L " +
"ON L.LOCALITY_CODE=SC.LOCALITY_CODE INNER JOIN STRG_SERIES SS " +
"ON SS.SC_CODE=SC.SC_CODE INNER JOIN SPECIALITY SPL " +
"ON SPL.SPL_CODE=SS.SPL_CODE " +
"WHERE SM.EVENT_DATE <= sysdate) INTERSECT " +
"(SELECT TO_CHAR(SPH.PLAN_DATE,'DD-MON-YYYY') AS EVENTDATE , " +
"SP.SALES_PERS , SP.SP_NAME ,SPC.SC_CODE ," +
"INITCAP(SC.FIRST_NAME||' '||SC.MIDDLE_NAME||' '||SC.LAST_NAME )" +
"AS DOCTORNAME , L.DESCR AS LOCALITY ,SPL.DESCR AS " +
"SPECIALITY FROM SALES_PERS SP INNER JOIN SPRS_PLAN_HDR SPH " +
"ON SP.SALES_PERS=SPH.SPRS_CODE__PLAN INNER JOIN " +
"SPRS_PLAN_CUST SPC ON SPH.PLAN_ID=SPC.PLAN_ID INNER JOIN " +
"STRG_CUSTOMER SC ON SC.SC_CODE=SPC.SC_CODE INNER JOIN " +
"LOCALITY L ON L.LOCALITY_CODE=SC.LOCALITY_CODE INNER JOIN " +
"STRG_SERIES SS ON SS.SC_CODE=SC.SC_CODE INNER JOIN " +
"SPECIALITY SPL ON SPL.SPL_CODE=SS.SPL_CODE " +
"WHERE SPH.PLAN_DATE <= sysdate "+localSQL+")";*/
// ADDED ROWNUM < 10 REMOVE WHILE RELEASE AND SYSDATE <= CHANGE TO = // ADDED ROWNUM < 10 REMOVE WHILE RELEASE AND SYSDATE <= CHANGE TO =
// new sql query provided by sagar // new sql query provided by sagar
sql ="SELECT SM.EVENT_DATE, SM.TRAN_ID , SM.SALES_PERS, SP.SP_NAME, SM.STRG_CODE, (SC.FIRST_NAME ||' '||SC.LAST_NAME)AS NAME " sql ="SELECT SM.TRAN_ID, SPH.PLAN_DATE, SPH.SPRS_CODE__PLAN, " +
+ " FROM STRG_MEET SM INNER JOIN SALES_PERS SP ON SP.SALES_PERS = SM.SALES_PERS INNER JOIN STRG_CUSTOMER SC ON SC.SC_CODE=SM.STRG_CODE " "SP.SP_NAME, SPC.SC_CODE, (SC.FIRST_NAME ||' '||SC.LAST_NAME)" +
+ " INNER JOIN SPRS_PLAN_HDR SPH ON SPH.SPRS_CODE__PLAN = SM.SALES_PERS AND SPH.PLAN_DATE=SM.EVENT_DATE " "AS NAME FROM SPRS_PLAN_HDR SPH INNER JOIN SPRS_PLAN_CUST SPC" +
+ " WHERE SM.EVENT_DATE = sysdate AND SM.SALES_PERS= SP.SALES_PERS " " ON SPC.PLAN_ID=SPH.PLAN_ID INNER JOIN SALES_PERS SP " +
+ " AND NOT EXISTS (SELECT SPC.SC_CODE FROM SPRS_PLAN_CUST SPC " "ON SP.SALES_PERS = SPH.SPRS_CODE__PLAN INNER JOIN " +
+ " WHERE SPC.SC_CODE=SM.STRG_CODE AND SPC.PLAN_ID = SPH.PLAN_ID) "; "STRG_CUSTOMER SC ON SC.SC_CODE=SPC.SC_CODE INNER JOIN " +
"STRG_MEET SM ON SM.STRG_CODE=SPC.SC_CODE " +
"AND SM.EVENT_DATE=SPH.PLAN_DATE " +
"WHERE PLAN_DATE='"+currentDate+"' AND " +
"SPH.SPRS_CODE__PLAN="+salePersons+" AND SPH.CONFIRM='Y'";
pstmt = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); pstmt = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
...@@ -837,16 +860,16 @@ public class PlanVsActual extends ValidatorEJB implements PlanVsActualLocal,Plan ...@@ -837,16 +860,16 @@ public class PlanVsActual extends ValidatorEJB implements PlanVsActualLocal,Plan
rowBuffer.append("<table cellspacing='0' cellpadding='0' width='100%' ><tr rowspan='2'><td class='defaultTitle'>Planned</td></tr>"); rowBuffer.append("<table cellspacing='0' cellpadding='0' width='100%' ><tr rowspan='2'><td class='defaultTitle'>Planned</td></tr>");
while(rs.next()) while(rs.next())
{ {
salesPersonTranId = checkNull(rs.getString("TRAN_ID"));
salesPersonCode = checkNull(rs.getString("SALES_PERS")); salesPersonCode = checkNull(rs.getString("SALES_PERS"));
salesPersonName = checkNull(rs.getString("SP_NAME")); salesPersonName = checkNull(rs.getString("SP_NAME"));
salesTranID = checkNull(rs.getString("TRAN_ID"));
String object = "images"+ File.separator + "users"; String object = "images"+ File.separator + "users";
plannedDocImagePath = "/ibase/CustomMenuImageServlet?fldValue="+salesPersonCode+"&object="+object+"&objName="+object+"&ALT_FLD_VALUE="+salesPersonName; plannedDocImagePath = "/ibase/CustomMenuImageServlet?fldValue="+salesPersonCode+"&object="+object+"&objName="+object+"&ALT_FLD_VALUE="+salesPersonName;
salesPerson_image = "<img class='cardProdImg2' src='"+plannedDocImagePath+"'/>"; salesPerson_image = "<img class='cardProdImg2' src='"+plannedDocImagePath+"'/>";
rowBuffer.append("<tr><td><table cellspacing='0' cellpadding='0' " + rowBuffer.append("<tr class='row' id='"+salesPersonTranId+"' onclick='getRowWisePkValue(this.id)'><td><table cellspacing='0' cellpadding='0' " +
"style='border-bottom:1px solid #E8E8E8;' width='100%'><tr>" + "style='border-bottom:1px solid #E8E8E8;' width='100%'><tr>" +
"<td width='2%'>"+salesPerson_image+"</td>" + "<td width='2%'>"+salesPerson_image+"</td>" +
"<td style = 'width:80%;' id='"+salesTranID+"' onclick='getRowWisePkValue(this.id)' >"+checkNull(rs.getString("SP_NAME"))+"</td></tr></table></td></tr>"); "<td>"+salesPersonName.toUpperCase()+"</td></tr></table></td></tr>");
} }
rowBuffer.append("</table>"); rowBuffer.append("</table>");
} }
...@@ -858,11 +881,41 @@ public class PlanVsActual extends ValidatorEJB implements PlanVsActualLocal,Plan ...@@ -858,11 +881,41 @@ public class PlanVsActual extends ValidatorEJB implements PlanVsActualLocal,Plan
/*----------Unplanned doctors visited.--*/ /*----------Unplanned doctors visited.--*/
/*sql = "(SELECT TO_CHAR(SM.EVENT_DATE,'DD-MON-YYYY') AS EVENTDATE , " +
"SP.SALES_PERS ,SP.SP_NAME ,SM.STRG_CODE ," +
"INITCAP(SC.FIRST_NAME||' '||SC.MIDDLE_NAME||' '||SC.LAST_NAME )" +
"AS DOCTORNAME ,L.DESCR AS LOCALITY ,SPL.DESCR AS SPECIALITY " +
"FROM SALES_PERS SP INNER JOIN STRG_MEET SM " +
"ON SP.SALES_PERS=SM.SALES_PERS INNER JOIN STRG_CUSTOMER SC " +
"ON SC.SC_CODE=SM.STRG_CODE INNER JOIN LOCALITY L " +
"ON L.LOCALITY_CODE=SC.LOCALITY_CODE INNER JOIN STRG_SERIES SS " +
"ON SS.SC_CODE=SC.SC_CODE INNER JOIN SPECIALITY SPL " +
"ON SPL.SPL_CODE=SS.SPL_CODE " +
"WHERE SM.EVENT_DATE <= sysdate) INTERSECT " +
"(SELECT TO_CHAR(SPH.PLAN_DATE,'DD-MON-YYYY') AS EVENTDATE , " +
"SP.SALES_PERS , SP.SP_NAME ,SPC.SC_CODE ," +
"INITCAP(SC.FIRST_NAME||' '||SC.MIDDLE_NAME||' '||SC.LAST_NAME )" +
"AS DOCTORNAME , L.DESCR AS LOCALITY ,SPL.DESCR AS " +
"SPECIALITY FROM SALES_PERS SP INNER JOIN SPRS_PLAN_HDR SPH " +
"ON SP.SALES_PERS=SPH.SPRS_CODE__PLAN INNER JOIN " +
"SPRS_PLAN_CUST SPC ON SPH.PLAN_ID=SPC.PLAN_ID INNER JOIN " +
"STRG_CUSTOMER SC ON SC.SC_CODE=SPC.SC_CODE INNER JOIN " +
"LOCALITY L ON L.LOCALITY_CODE=SC.LOCALITY_CODE INNER JOIN " +
"STRG_SERIES SS ON SS.SC_CODE=SC.SC_CODE INNER JOIN " +
"SPECIALITY SPL ON SPL.SPL_CODE=SS.SPL_CODE " +
"WHERE SPH.PLAN_DATE <= sysdate "+localSQL+")";*/
// sql for unplanned by sagar // sql for unplanned by sagar
sql = " SELECT SM.EVENT_DATE, SM.TRAN_ID , SM.SALES_PERS, SP.SP_NAME, SM.STRG_CODE, (SC.FIRST_NAME ||' '||SC.LAST_NAME)AS NAME " sql = "SELECT SM.TRAN_ID, SM.EVENT_DATE, SM.SALES_PERS, SP.SP_NAME, SM.STRG_CODE, " +
+ " FROM STRG_MEET SM INNER JOIN SALES_PERS SP ON SP.SALES_PERS = SM.SALES_PERS INNER JOIN STRG_CUSTOMER SC ON SC.SC_CODE=SM.STRG_CODE INNER JOIN SPRS_PLAN_HDR SPH ON SPH.SPRS_CODE__PLAN = SM.SALES_PERS AND SPH.PLAN_DATE=SM.EVENT_DATE " "(SC.FIRST_NAME ||' '||SC.LAST_NAME)AS NAME FROM STRG_MEET SM " +
+ " WHERE SM.EVENT_DATE = sysdate AND SM.SALES_PERS = SP.SALES_PERS AND NOT EXISTS (SELECT SPC.SC_CODE FROM SPRS_PLAN_CUST SPC WHERE SPC.SC_CODE=SM.STRG_CODE AND SPC.PLAN_ID = SPH.PLAN_ID) "; "INNER JOIN SALES_PERS SP ON SP.SALES_PERS = SM.SALES_PERS INNER " +
"JOIN STRG_CUSTOMER SC ON SC.SC_CODE=SM.STRG_CODE LEFT OUTER JOIN " +
"SPRS_PLAN_HDR SPH ON SM.SALES_PERS=SPH.SPRS_CODE__PLAN AND " +
"SPH.PLAN_DATE=SM.EVENT_DATE WHERE SM.EVENT_DATE='"+currentDate+"' " +
"AND SM.SALES_PERS="+salePersons+" AND NOT EXISTS (SELECT SPC.SC_CODE " +
"FROM SPRS_PLAN_CUST SPC WHERE SPC.SC_CODE=SM.STRG_CODE AND " +
"SPC.PLAN_ID = SPH.PLAN_ID)";
pstmt = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); pstmt = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
...@@ -877,16 +930,16 @@ public class PlanVsActual extends ValidatorEJB implements PlanVsActualLocal,Plan ...@@ -877,16 +930,16 @@ public class PlanVsActual extends ValidatorEJB implements PlanVsActualLocal,Plan
rowBuffer.append("<table cellspacing='0' cellpadding='0' width='100%' ><tr rowspan='2'><td class='defaultTitle'>Unplanned</td></tr>"); rowBuffer.append("<table cellspacing='0' cellpadding='0' width='100%' ><tr rowspan='2'><td class='defaultTitle'>Unplanned</td></tr>");
while(rs.next()) while(rs.next())
{ {
salesPersonTranId = checkNull(rs.getString("TRAN_ID"));
salesPersonCode = checkNull(rs.getString("SALES_PERS")); salesPersonCode = checkNull(rs.getString("SALES_PERS"));
salesPersonName = checkNull(rs.getString("SP_NAME")); salesPersonName = checkNull(rs.getString("SP_NAME"));
salesTranID = checkNull(rs.getString("TRAN_ID"));
String object = "images"+ File.separator + "users"; String object = "images"+ File.separator + "users";
unplannedDocImagePath = "/ibase/CustomMenuImageServlet?fldValue="+salesPersonCode+"&object="+object+"&objName="+object+"&ALT_FLD_VALUE="+salesPersonName; unplannedDocImagePath = "/ibase/CustomMenuImageServlet?fldValue="+salesPersonCode+"&object="+object+"&objName="+object+"&ALT_FLD_VALUE="+salesPersonName;
salesPerson_image = "<img class='cardProdImg2' src='"+unplannedDocImagePath+"'/>"; salesPerson_image = "<img class='cardProdImg2' src='"+unplannedDocImagePath+"'/>";
rowBuffer.append("<tr><td><table cellspacing='0' cellpadding='0' " + rowBuffer.append("<tr class='row' id='"+salesPersonTranId+"' onclick='getRowWisePkValue(this.id)'><td><table cellspacing='0' cellpadding='0' " +
"style='border-bottom:1px solid #E8E8E8;' width='100%'><tr>" + "style='border-bottom:1px solid #E8E8E8;' width='100%'><tr>" +
"<td width='2%'>"+salesPerson_image+"</td>" + "<td width='2%'>"+salesPerson_image+"</td>" +
"<td style = 'width:80%;' id='"+salesTranID+"' onclick='getRowWisePkValue(this.id)' >"+checkNull(rs.getString("SP_NAME"))+"</td></tr></table></td></tr>"); "<td>"+salesPersonName.toUpperCase()+"</td></tr></table></td></tr>");
} }
rowBuffer.append("</table>"); rowBuffer.append("</table>");
} }
...@@ -897,11 +950,22 @@ public class PlanVsActual extends ValidatorEJB implements PlanVsActualLocal,Plan ...@@ -897,11 +950,22 @@ public class PlanVsActual extends ValidatorEJB implements PlanVsActualLocal,Plan
/*----------Listed doctors visited.--*/ /*----------Listed doctors visited.--*/
/*sql = "SELECT sm.tran_id, TO_CHAR(sm.event_date, 'dd-mon-yyyy') AS Event_Date, "
+ "sm.strg_code, sm.sales_pers, sp.sc_code, SS.SP_NAME "
+ "FROM SALES_PERS SS INNER JOIN STRG_MEET SM ON SS.SALES_PERS=SM.SALES_PERS "
+ "INNER JOIN strg_series SP ON sp.sales_pers = sm.sales_pers "
+ "WHERE sm.strg_code =sp.sc_code AND sm.event_date <= sysdate "+localSQL+" and ROWNUM <10 ";*/
//Listed Query by SAGAR //Listed Query by SAGAR
sql = "SELECT SM.EVENT_DATE, SM.TRAN_ID , SM.SALES_PERS, SP.SP_NAME ,SM.STRG_CODE ,(SC.FIRST_NAME ||' '||SC.LAST_NAME)AS NAME " sql = "SELECT SM.TRAN_ID, SM.EVENT_DATE ,SM.SALES_PERS ,SP.SP_NAME ,SM.STRG_CODE ," +
+ " FROM STRG_SERIES SS INNER JOIN STRG_MEET SM ON SM.STRG_CODE=SS.SC_CODE AND SM.SALES_PERS=SS.SALES_PERS INNER JOIN SALES_PERS SP ON SP.SALES_PERS=SS.SALES_PERS INNER JOIN STRG_CUSTOMER SC ON SC.SC_CODE=SM.STRG_CODE " "(SC.FIRST_NAME ||' '||SC.LAST_NAME)AS NAME FROM STRG_SERIES SS " +
+ " WHERE SM.SALES_PERS = SP.SALES_PERS AND SM.EVENT_DATE = sysdate AND SS.STATUS='Y' "; "INNER JOIN STRG_MEET SM ON SM.STRG_CODE=SS.SC_CODE " +
"AND SM.SALES_PERS=SS.SALES_PERS INNER JOIN SALES_PERS SP ON " +
"SP.SALES_PERS=SS.SALES_PERS INNER JOIN STRG_CUSTOMER SC " +
"ON SC.SC_CODE=SM.STRG_CODE WHERE SM.SALES_PERS = "+salePersons+" " +
"AND SM.EVENT_DATE = '"+currentDate+"' AND SS.STATUS='Y'";
pstmt = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); pstmt = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs = pstmt.executeQuery(); rs = pstmt.executeQuery();
...@@ -917,16 +981,16 @@ public class PlanVsActual extends ValidatorEJB implements PlanVsActualLocal,Plan ...@@ -917,16 +981,16 @@ public class PlanVsActual extends ValidatorEJB implements PlanVsActualLocal,Plan
{ {
//salesPersonCode = checkNull(rs.getString("SALES_PERS")) ; //salesPersonCode = checkNull(rs.getString("SALES_PERS")) ;
//salesPersonName = checkNull(rs.getString("SP_NAME")) ; //salesPersonName = checkNull(rs.getString("SP_NAME")) ;
salesPersonTranId = checkNull(rs.getString("TRAN_ID"));
customerCode = checkNull(rs.getString("STRG_CODE")); customerCode = checkNull(rs.getString("STRG_CODE"));
customerName = checkNull(rs.getString("NAME")); customerName = checkNull(rs.getString("NAME"));
salesTranID = checkNull(rs.getString("TRAN_ID"));
String object = "images"+ File.separator + "users"; String object = "images"+ File.separator + "users";
listedDocImagePath = "/ibase/CustomMenuImageServlet?fldValue="+customerCode+"&object="+object+"&objName="+object+"&ALT_FLD_VALUE="+customerName; listedDocImagePath = "/ibase/CustomMenuImageServlet?fldValue="+customerCode+"&object="+object+"&objName="+object+"&ALT_FLD_VALUE="+customerName;
customer_Image = "<img class='cardProdImg2' src='"+listedDocImagePath+"'/>"; customer_Image = "<img class='cardProdImg2' src='"+listedDocImagePath+"'/>";
listedBuffer.append("<tr><td><table cellspacing='0' cellpadding='0' " + listedBuffer.append("<tr class='row' id='"+salesPersonTranId+"' onclick='getRowWisePkValue(this.id)'><td><table cellspacing='0' cellpadding='0' " +
"style='border-bottom:1px solid #E8E8E8;' width='100%'><tr>" + "style='border-bottom:1px solid #E8E8E8;' width='100%'><tr>" +
"<td width='2%'>"+customer_Image+"</td>" + "<td width='2%'>"+customer_Image+"</td>" +
"<td style = 'width:80%;' id='"+salesTranID+"' onclick='getRowWisePkValue(this.id)' >"+customerName.toUpperCase()+"</td></tr></table></td></tr>"); "<td>"+customerName.toUpperCase()+"</td></tr></table></td></tr>");
} }
listedBuffer.append("</table>"); listedBuffer.append("</table>");
} }
...@@ -937,11 +1001,20 @@ public class PlanVsActual extends ValidatorEJB implements PlanVsActualLocal,Plan ...@@ -937,11 +1001,20 @@ public class PlanVsActual extends ValidatorEJB implements PlanVsActualLocal,Plan
/*----------Unlisted doctors visited.--*/ /*----------Unlisted doctors visited.--*/
/*sql = "SELECT sm.tran_id, TO_CHAR(sm.event_date, 'dd-mon-yyyy') AS Event_Date, "
+ "sm.strg_code, sm.sales_pers, sp.sc_code, SS.SP_NAME "
+ "FROM SALES_PERS SS INNER JOIN STRG_MEET SM ON SS.SALES_PERS=SM.SALES_PERS "
+ "INNER JOIN strg_series SP ON sp.sales_pers = sm.sales_pers "
+ "WHERE sm.strg_code !=sp.sc_code AND sm.event_date <= sysdate "+localSQL+" and ROWNUM <10 ";*/
// Unlisted query by Sagar // Unlisted query by Sagar
sql = "SELECT SM.EVENT_DATE , SM.TRAN_ID , SP.SALES_PERS ,SP.SP_NAME,SM.STRG_CODE,SM.STRG_NAME " sql = "SELECT SM.TRAN_ID, SM.EVENT_DATE ,SP.SALES_PERS ,SP.SP_NAME ,SM.STRG_CODE ," +
+ " FROM STRG_MEET SM INNER JOIN SALES_PERS SP ON SP.SALES_PERS=SM.SALES_PERS " "SM.STRG_NAME FROM STRG_MEET SM LEFT JOIN STRG_CUSTOMER SC " +
+ " WHERE SM.SALES_PERS= SP.SALES_PERS AND SM.EVENT_DATE = sysdate AND NOT EXISTS (SELECT SC_CODE FROM STRG_CUSTOMER SC WHERE SC.SC_CODE = SM.STRG_CODE) "; "ON SC.SC_CODE = SM.STRG_CODE INNER JOIN SALES_PERS SP ON " +
"SP.SALES_PERS=SM.SALES_PERS WHERE SM.SALES_PERS="+salePersons+" " +
"AND SM.EVENT_DATE='"+currentDate+"' AND NOT EXISTS " +
"(SELECT STRG_CODE FROM STRG_MEET SM WHERE SC.SC_CODE = SM.STRG_CODE)";
pstmt = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY); pstmt = conn.prepareStatement(sql,ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs = pstmt.executeQuery(); rs = pstmt.executeQuery();
...@@ -955,16 +1028,16 @@ public class PlanVsActual extends ValidatorEJB implements PlanVsActualLocal,Plan ...@@ -955,16 +1028,16 @@ public class PlanVsActual extends ValidatorEJB implements PlanVsActualLocal,Plan
listedBuffer.append("<table cellspacing='0' cellpadding='0' width='100%' ><tr rowspan='2'><td class='defaultTitle'>Unlisted</td></tr>"); listedBuffer.append("<table cellspacing='0' cellpadding='0' width='100%' ><tr rowspan='2'><td class='defaultTitle'>Unlisted</td></tr>");
while(rs.next()) while(rs.next())
{ {
salesPersonTranId = checkNull(rs.getString("TRAN_ID"));
salesPersonCode = checkNull(rs.getString("SALES_PERS")) ; salesPersonCode = checkNull(rs.getString("SALES_PERS")) ;
salesPersonName = checkNull(rs.getString("SP_NAME")) ; salesPersonName = checkNull(rs.getString("SP_NAME")) ;
salesTranID = checkNull(rs.getString("TRAN_ID"));
String object = "images"+ File.separator + "users"; String object = "images"+ File.separator + "users";
unlistedDocImagePath = "/ibase/CustomMenuImageServlet?fldValue="+salesPersonCode+"&object="+object+"&objName="+object+"&ALT_FLD_VALUE="+salesPersonName; unlistedDocImagePath = "/ibase/CustomMenuImageServlet?fldValue="+salesPersonCode+"&object="+object+"&objName="+object+"&ALT_FLD_VALUE="+salesPersonName;
salesPerson_image = "<img class='cardProdImg2' src='"+unlistedDocImagePath+"'/>"; salesPerson_image = "<img class='cardProdImg2' src='"+unlistedDocImagePath+"'/>";
listedBuffer.append("<tr><td><table cellspacing='0' cellpadding='0' " + listedBuffer.append("<tr class='row' id='"+salesPersonTranId+"' onclick='getRowWisePkValue(this.id)'><td><table cellspacing='0' cellpadding='0' " +
"style='border-bottom:1px solid #E8E8E8;' width='100%'><tr>" + "style='border-bottom:1px solid #E8E8E8;' width='100%'><tr>" +
"<td width='2%'>"+salesPerson_image+"</td>" + "<td width='2%'>"+salesPerson_image+"</td>" +
"<td style = 'width:80%;' id='"+salesTranID+"' onclick='getRowWisePkValue(this.id)' >"+salesPersonName.toUpperCase()+"</td></tr></table></td></tr>"); "<td>"+salesPersonName.toUpperCase()+"</td></tr></table></td></tr>");
} }
listedBuffer.append("</table>"); listedBuffer.append("</table>");
} }
...@@ -977,7 +1050,7 @@ public class PlanVsActual extends ValidatorEJB implements PlanVsActualLocal,Plan ...@@ -977,7 +1050,7 @@ public class PlanVsActual extends ValidatorEJB implements PlanVsActualLocal,Plan
listedBuffer.append("</div>"); listedBuffer.append("</div>");
System.out.println("rowbuffer ======> "+rowBuffer); System.out.println("rowbuffer ======> "+rowBuffer);
System.out.println("listed buffer =========> " + listedBuffer); System.out.println("listed buffer =========> " + listedBuffer);
if(planned > 0) if(planned > 0 || unplanned > 0)
{ {
rawJson.put("plannedtodaystatus", rowBuffer.toString()); rawJson.put("plannedtodaystatus", rowBuffer.toString());
rawJson.put("listedtodaystatus", ""); rawJson.put("listedtodaystatus", "");
...@@ -999,8 +1072,8 @@ public class PlanVsActual extends ValidatorEJB implements PlanVsActualLocal,Plan ...@@ -999,8 +1072,8 @@ public class PlanVsActual extends ValidatorEJB implements PlanVsActualLocal,Plan
double listedDashArray = (listed/totalCountListing)*280; double listedDashArray = (listed/totalCountListing)*280;
System.out.println("listedDashArray ====== : "+listedDashArray); System.out.println("listedDashArray ====== : "+listedDashArray);
String planning = "<td style='width: 29%;'> <div style='display: inline-flex; padding: 6px;float: left;'> <label style='padding:5px 0px 5px 12px;float:right;display:block font-size: 12px;text-align: right;'>Planned</label> <div class='color-box' style='position: absolute;margin-top:8px;background-color: #3BC806;width: 8px;height: 8px;margin-right: 5px;vertical-align: middle;border-radius: 8px;display:block;text-align: right;float: right;'></div> </div> <div style='display: inline-flex;padding: 6px;float: left;'> <label style='padding:5px 0px 5px 12px; float:right; display:block font-size: 12px;'>Unplanned</label> <div class='color-box' style='position: absolute; margin-top:8px; background-color: #FFA200; width: 8px;height: 8px; margin-right: 5px; vertical-align: middle;border-radius: 8px; display:block;'></div> </div> <div> </div> <div> </div> </td>"; String planning = "<div style='display: inline-flex; padding: 6px;'> <label style='padding:5px 0px 5px 0px;'>Planned</label> <div class='color-box' style='position: absolute;margin-top:8px;background-color: #3BC806;width: 8px;height: 8px;margin-right: 5px;vertical-align: middle;border-radius: 8px;display:block;text-align: right;float: right;'></div> </div> <div style='display: inline-flex;padding: 6px;'> <label style='padding:5px 0px 5px 0px;'>Unplanned</label> <div class='color-box' style='position: absolute; margin-top:8px; background-color: #FFA200; width: 8px;height: 8px; margin-right: 5px; vertical-align: middle;border-radius: 8px; display:block;'></div> </div> <div> </div> <div> </div>";
String listing = "<td style='width: 29%;'> <div style='display: inline-flex; padding: 6px;float: left;'> <label style='padding:5px 0px 5px 12px;float:right;display:block font-size: 12px;text-align: right;'>Listed</label> <div class='color-box' style='position: absolute;margin-top:8px;background-color: #2F9EFC;width: 8px;height: 8px;margin-right: 5px;vertical-align: middle;border-radius: 8px;display:block;text-align: right;float: right;'></div> </div> <div style='display: inline-flex;padding: 6px;float: left;'> <label style='padding:5px 0px 5px 12px; float:right; display:block font-size: 12px;'>Unlisted</label> <div class='color-box' style='position: absolute; margin-top:8px; background-color: #FF6715; width: 8px;height: 8px; margin-right: 5px; vertical-align: middle;border-radius: 8px; display:block;'></div> </div> <div> </div> <div> </div> </td>"; String listing = "<div style='display: inline-flex; padding: 6px;'> <label style='padding:5px 0px 5px 0px;'>Listed</label> <div class='color-box' style='position: absolute;margin-top:8px;background-color: #2F9EFC;width: 8px;height: 8px;margin-right: 5px;vertical-align: middle;border-radius: 8px;display:block;text-align: right;float: right;'></div> </div> <div style='display: inline-flex;padding: 6px;'> <label style='padding:5px 0px 5px 0px;'>Unlisted</label> <div class='color-box' style='position: absolute; margin-top:8px; background-color: #FF6715; width: 8px;height: 8px; margin-right: 5px; vertical-align: middle;border-radius: 8px; display:block;'></div> </div> <div> </div> <div> </div>";
// display data according to planning and listing if planning data is available then only planned & unplanned data will be displayed or else listed & unlisted data will be displayed // display data according to planning and listing if planning data is available then only planned & unplanned data will be displayed or else listed & unlisted data will be displayed
...@@ -1021,8 +1094,14 @@ public class PlanVsActual extends ValidatorEJB implements PlanVsActualLocal,Plan ...@@ -1021,8 +1094,14 @@ public class PlanVsActual extends ValidatorEJB implements PlanVsActualLocal,Plan
rawJson.put("Listing", listing); rawJson.put("Listing", listing);
rawJson.put("Planning", ""); rawJson.put("Planning", "");
} }
if(planned>0 || unplanned>0)
rawJson.put("total", planned+unplanned+listed+unListed); {
rawJson.put("total", planned+unplanned);
}
else
{
rawJson.put("total", listed+unListed);
}
rawDataPlanDtlJson.put(count, rawJson); rawDataPlanDtlJson.put(count, rawJson);
} }
catch (Exception e) catch (Exception e)
......
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