完成排行榜代码,还没测试
This commit is contained in:
@@ -6,6 +6,10 @@ CREATE OR REPLACE PACKAGE telsale_archievement_pkg IS
|
|||||||
|
|
||||||
TYPE cur_type IS REF CURSOR;
|
TYPE cur_type IS REF CURSOR;
|
||||||
|
|
||||||
|
-- <20>쳣
|
||||||
|
DEPARTMENTCODE_EXCEPTION_CODE CONSTANT INTEGER := -20000;
|
||||||
|
DEPARTMENTCODE_EXCEPTION_MSG CONSTANT VARCHAR2(100) := '<27><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD><EFBFBD><EFBFBD>Ч';
|
||||||
|
|
||||||
PROCEDURE department_archievement
|
PROCEDURE department_archievement
|
||||||
(
|
(
|
||||||
a_department_code IN VARCHAR2,
|
a_department_code IN VARCHAR2,
|
||||||
@@ -17,8 +21,11 @@ CREATE OR REPLACE PACKAGE telsale_archievement_pkg IS
|
|||||||
|
|
||||||
PROCEDURE caller_arch_ranking_list
|
PROCEDURE caller_arch_ranking_list
|
||||||
(
|
(
|
||||||
a_department_code IN VARCHAR2,
|
a_department_code IN VARCHAR2,
|
||||||
a_chefei_ranking_list OUT cur_type
|
a_year IN VARCHAR2,
|
||||||
|
a_month IN VARCHAR2,
|
||||||
|
a_attaching_ranking_list OUT cur_type,
|
||||||
|
a_renewal_ranking_list OUT cur_type
|
||||||
);
|
);
|
||||||
|
|
||||||
END telsale_archievement_pkg;
|
END telsale_archievement_pkg;
|
||||||
@@ -46,11 +53,19 @@ CREATE OR REPLACE PACKAGE BODY telsale_archievement_pkg IS
|
|||||||
l_firstday := to_date(to_char(SYSDATE,
|
l_firstday := to_date(to_char(SYSDATE,
|
||||||
'yyyy') || '-01-01 00:00:00',
|
'yyyy') || '-01-01 00:00:00',
|
||||||
'yyyy-mm-dd hh24:mi:ss');
|
'yyyy-mm-dd hh24:mi:ss');
|
||||||
-- ȡ<>ò<EFBFBD><EFBFBD>Ŵ<EFBFBD><EFBFBD><EFBFBD>
|
-- <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
SELECT bm.department_name
|
BEGIN
|
||||||
INTO l_department_name
|
SELECT department_name
|
||||||
FROM idst0.bm_t bm
|
INTO l_department_name
|
||||||
WHERE bm.department_code = a_department_code;
|
FROM idst0.bm_t bm
|
||||||
|
WHERE bm.department_code = a_department_code;
|
||||||
|
EXCEPTION
|
||||||
|
-- <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׳<EFBFBD><D7B3>쳣
|
||||||
|
WHEN NO_DATA_FOUND THEN
|
||||||
|
raise_application_error(DEPARTMENTCODE_EXCEPTION_CODE,
|
||||||
|
DEPARTMENTCODE_EXCEPTION_MSG);
|
||||||
|
|
||||||
|
END;
|
||||||
|
|
||||||
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB8>
|
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB8>
|
||||||
SELECT decode(SUM(cf.<2E><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>),
|
SELECT decode(SUM(cf.<2E><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>),
|
||||||
@@ -102,32 +117,55 @@ CREATE OR REPLACE PACKAGE BODY telsale_archievement_pkg IS
|
|||||||
ORDER BY cf.<2E>·<EFBFBD>;
|
ORDER BY cf.<2E>·<EFBFBD>;
|
||||||
END;
|
END;
|
||||||
|
|
||||||
|
/*******************************************************/
|
||||||
|
-- <20><>ϯ<EFBFBD><CFAF><EFBFBD>а<EFBFBD>
|
||||||
PROCEDURE caller_arch_ranking_list
|
PROCEDURE caller_arch_ranking_list
|
||||||
(
|
(
|
||||||
a_department_code IN VARCHAR2,
|
a_department_code IN VARCHAR2,
|
||||||
a_chefei_ranking_list OUT cur_type
|
a_year IN VARCHAR2,
|
||||||
|
a_month IN VARCHAR2,
|
||||||
|
a_attaching_ranking_list OUT cur_type,
|
||||||
|
a_renewal_ranking_list OUT cur_type
|
||||||
) IS
|
) IS
|
||||||
l_current_month VARCHAR2(10);
|
l_department_name VARCHAR2(100);
|
||||||
l_current_year VARCHAR2(4);
|
|
||||||
BEGIN
|
BEGIN
|
||||||
l_current_month := to_char(SYSDATE,
|
-- <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
'mm');
|
BEGIN
|
||||||
l_current_year := to_char(SYSDATE,
|
SELECT department_name
|
||||||
'yyyy');
|
INTO l_department_name
|
||||||
|
FROM idst0.bm_t bm
|
||||||
|
WHERE bm.department_code = a_department_code;
|
||||||
|
EXCEPTION
|
||||||
|
-- <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׳<EFBFBD><D7B3>쳣
|
||||||
|
WHEN NO_DATA_FOUND THEN
|
||||||
|
raise_application_error(DEPARTMENTCODE_EXCEPTION_CODE,
|
||||||
|
DEPARTMENTCODE_EXCEPTION_MSG);
|
||||||
|
|
||||||
OPEN a_chefei_ranking_list FOR
|
END;
|
||||||
|
|
||||||
|
-- <20><><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD><DABA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD>
|
||||||
|
OPEN a_attaching_ranking_list FOR
|
||||||
SELECT <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>,
|
SELECT <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>,
|
||||||
round(SUM(<28><><EFBFBD><EFBFBD><EFBFBD>ںϱ<DABA><CFB1><EFBFBD>) / SUM(<28><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>) * 100,
|
round(nvl(SUM(<28><><EFBFBD><EFBFBD><EFBFBD>ںϱ<DABA><CFB1><EFBFBD>) / SUM(<28><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>),
|
||||||
|
0) * 100,
|
||||||
2) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB8>
|
2) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB8>
|
||||||
FROM <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD>
|
FROM <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD>
|
||||||
WHERE <20>·<EFBFBD> = l_current_month
|
WHERE <20>·<EFBFBD> = a_month
|
||||||
AND <20><><EFBFBD><EFBFBD> = l_current_year
|
AND <20><><EFBFBD><EFBFBD> = a_year
|
||||||
AND <20><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD> = a_department_code
|
AND <20><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD> = a_department_code
|
||||||
GROUP BY <20>·<EFBFBD>,
|
GROUP BY <20><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
<20><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD>,
|
|
||||||
<20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>
|
|
||||||
--HAVING <20>·<EFBFBD> = '06<30><36>'
|
--HAVING <20>·<EFBFBD> = '06<30><36>'
|
||||||
ORDER BY <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB8> DESC;
|
ORDER BY <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB8> DESC;
|
||||||
|
|
||||||
|
-- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD>
|
||||||
|
OPEN a_renewal_ranking_list FOR
|
||||||
|
SELECT <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>,
|
||||||
|
round(nvl(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD> / <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> * 100,
|
||||||
|
0),
|
||||||
|
2) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
|
FROM <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3> xb
|
||||||
|
WHERE xb.<2E><><EFBFBD><EFBFBD> = '<27><><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD>'
|
||||||
|
ORDER BY <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DESC;
|
||||||
END;
|
END;
|
||||||
|
|
||||||
BEGIN
|
BEGIN
|
||||||
|
@@ -16,6 +16,13 @@ public class CallerRankingItem
|
|||||||
|
|
||||||
public CallerRankingItem() {}
|
public CallerRankingItem() {}
|
||||||
|
|
||||||
|
public CallerRankingItem( int index, String callName, String appraiseValue )
|
||||||
|
{
|
||||||
|
this.index = index;
|
||||||
|
this.callerName = callName;
|
||||||
|
this.appraiseValue = appraiseValue;
|
||||||
|
}
|
||||||
|
|
||||||
public int getIndex()
|
public int getIndex()
|
||||||
{
|
{
|
||||||
return index;
|
return index;
|
||||||
|
@@ -9,17 +9,12 @@
|
|||||||
*/
|
*/
|
||||||
package com.cpic.xim.utils.ranking;
|
package com.cpic.xim.utils.ranking;
|
||||||
|
|
||||||
import java.util.Vector;
|
import java.sql.CallableStatement;
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
|
||||||
import java.sql.Connection;
|
import java.sql.Connection;
|
||||||
import java.sql.DriverManager;
|
import java.sql.DriverManager;
|
||||||
import java.sql.PreparedStatement;
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.sql.CallableStatement;
|
|
||||||
|
|
||||||
import java.util.Vector;
|
import java.util.Vector;
|
||||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
|
||||||
import oracle.jdbc.OracleCallableStatement;
|
import oracle.jdbc.OracleCallableStatement;
|
||||||
import oracle.jdbc.OracleTypes;
|
import oracle.jdbc.OracleTypes;
|
||||||
|
|
||||||
@@ -30,9 +25,13 @@ public class CallerRankingList
|
|||||||
private static String userName = "desktop_archievement_admin";
|
private static String userName = "desktop_archievement_admin";
|
||||||
private static String password = "Cpic123456";
|
private static String password = "Cpic123456";
|
||||||
|
|
||||||
private CallerRankingList( Vector<CallerRankingItem> attachingRateRankingList,
|
private CallerRankingList( String departmentCode, String year, String month,
|
||||||
|
Vector<CallerRankingItem> attachingRateRankingList,
|
||||||
Vector<CallerRankingItem> renewalRateRankingList)
|
Vector<CallerRankingItem> renewalRateRankingList)
|
||||||
{
|
{
|
||||||
|
this.departmentCode = departmentCode;
|
||||||
|
this.year = year;
|
||||||
|
this.month = month;
|
||||||
this.attachingRateRankingList = attachingRateRankingList;
|
this.attachingRateRankingList = attachingRateRankingList;
|
||||||
this.renewalRateRankingList = renewalRateRankingList;
|
this.renewalRateRankingList = renewalRateRankingList;
|
||||||
}
|
}
|
||||||
@@ -51,30 +50,77 @@ public class CallerRankingList
|
|||||||
|
|
||||||
Connection connection = null;
|
Connection connection = null;
|
||||||
CallableStatement statement = null;
|
CallableStatement statement = null;
|
||||||
ResultSet result = null;
|
ResultSet cur_attaching = null;
|
||||||
|
ResultSet cur_renewal = null;
|
||||||
String sql = """
|
String sql = """
|
||||||
{call telsale_archievement_pkg.caller_arch_ranking_list(?,?,?)}
|
{call telsale_archievement_pkg.caller_arch_ranking_list(?,?,?)}
|
||||||
""";
|
""";
|
||||||
String monthRegx = "(0[1-9])|(1[0-2])";
|
String monthRegx = "(0[1-9])|(1[0-2])";
|
||||||
String yearRegx = "20[0-2][0-0]";
|
String yearRegx = "20[0-2][0-0]";
|
||||||
|
|
||||||
|
Vector<CallerRankingItem> attachingRateRankingList = new Vector<>();
|
||||||
|
Vector<CallerRankingItem> renewalRateRankingList = new Vector<>();
|
||||||
|
|
||||||
|
int index = 1;
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
Class.forName( "oracle.jdbc.driver.OracleDriver" );
|
Class.forName( "oracle.jdbc.driver.OracleDriver" );
|
||||||
connection = DriverManager.getConnection( jdbcURL, userName, password );
|
connection = DriverManager.getConnection( jdbcURL, userName, password );
|
||||||
statement = connection.prepareCall(sql);
|
statement = connection.prepareCall( sql );
|
||||||
|
|
||||||
statement.setString( 1, departmentCode );
|
statement.setString( 1, departmentCode );
|
||||||
statement.registerOutParameter(2, OracleTypes.CURSOR );
|
statement.setString( 2, year );
|
||||||
statement.registerOutParameter(3, OracleTypes.CURSOR );
|
statement.setString( 3, month );
|
||||||
|
statement.registerOutParameter( 4, OracleTypes.CURSOR );
|
||||||
|
statement.registerOutParameter( 5, OracleTypes.CURSOR );
|
||||||
|
|
||||||
|
statement.execute();
|
||||||
|
|
||||||
|
// 车非渗透率
|
||||||
|
cur_attaching = ((OracleCallableStatement) statement).getCursor( 4 );
|
||||||
|
index = 1;
|
||||||
|
|
||||||
|
while ( cur_attaching.next())
|
||||||
|
{
|
||||||
|
String callerName = cur_attaching.getString( 1 );
|
||||||
|
String appraiseValue = cur_attaching.getString( 2 );
|
||||||
|
|
||||||
|
CallerRankingItem caller =
|
||||||
|
new CallerRankingItem( index, callerName, appraiseValue );
|
||||||
|
|
||||||
|
attachingRateRankingList.add( caller );
|
||||||
|
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 续保率
|
||||||
|
cur_renewal = ((OracleCallableStatement) statement).getCursor( 5 );
|
||||||
|
index = 1;
|
||||||
|
|
||||||
|
while ( cur_renewal.next())
|
||||||
|
{
|
||||||
|
String callerName = cur_renewal.getString( 1 );
|
||||||
|
String appraiseValue = cur_renewal.getString( 2 );
|
||||||
|
|
||||||
|
CallerRankingItem caller =
|
||||||
|
new CallerRankingItem( index, callerName, appraiseValue );
|
||||||
|
|
||||||
|
attachingRateRankingList.add( caller );
|
||||||
|
|
||||||
|
index++;
|
||||||
|
}
|
||||||
|
|
||||||
|
rankingList = new CallerRankingList( departmentCode, year, month,
|
||||||
|
attachingRateRankingList, renewalRateRankingList );
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if ( result != null )
|
if ( cur_attaching != null )
|
||||||
{
|
{
|
||||||
result.close();
|
cur_attaching.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch ( Exception exception )
|
catch ( Exception exception )
|
||||||
@@ -111,6 +157,56 @@ public class CallerRankingList
|
|||||||
return rankingList;
|
return rankingList;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getDepartmentCode()
|
||||||
|
{
|
||||||
|
return departmentCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setDepartmentCode( String departmentCode )
|
||||||
|
{
|
||||||
|
this.departmentCode = departmentCode;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getYear()
|
||||||
|
{
|
||||||
|
return year;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setYear( String year )
|
||||||
|
{
|
||||||
|
this.year = year;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getMonth()
|
||||||
|
{
|
||||||
|
return month;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMonth( String month )
|
||||||
|
{
|
||||||
|
this.month = month;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vector<CallerRankingItem> getAttachingRateRankingList()
|
||||||
|
{
|
||||||
|
return attachingRateRankingList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setAttachingRateRankingList( Vector<CallerRankingItem> attachingRateRankingList )
|
||||||
|
{
|
||||||
|
this.attachingRateRankingList = attachingRateRankingList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vector<CallerRankingItem> getRenewalRateRankingList()
|
||||||
|
{
|
||||||
|
return renewalRateRankingList;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRenewalRateRankingList( Vector<CallerRankingItem> renewalRateRankingList )
|
||||||
|
{
|
||||||
|
this.renewalRateRankingList = renewalRateRankingList;
|
||||||
|
}
|
||||||
|
|
||||||
// 部门代码
|
// 部门代码
|
||||||
private String departmentCode;
|
private String departmentCode;
|
||||||
|
|
||||||
@@ -121,11 +217,9 @@ public class CallerRankingList
|
|||||||
private String month;
|
private String month;
|
||||||
|
|
||||||
// 车非融合率排行
|
// 车非融合率排行
|
||||||
@JsonProperty( "attachingRateRankingList" )
|
|
||||||
private Vector<CallerRankingItem> attachingRateRankingList;
|
private Vector<CallerRankingItem> attachingRateRankingList;
|
||||||
|
|
||||||
// 续保率排行
|
// 续保率排行
|
||||||
@JsonProperty( "renewalRateRankingList" )
|
|
||||||
private Vector<CallerRankingItem> renewalRateRankingList;
|
private Vector<CallerRankingItem> renewalRateRankingList;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user