diff --git a/code/db/pkg/telsale_archievement_pkg.pck b/code/db/pkg/telsale_archievement_pkg.pck index 43ba8b1..4c7eb57 100644 --- a/code/db/pkg/telsale_archievement_pkg.pck +++ b/code/db/pkg/telsale_archievement_pkg.pck @@ -1,10 +1,10 @@ -CREATE OR REPLACE PACKAGE telsale_archievement_dev_pkg IS +CREATE OR REPLACE PACKAGE TELSALE_ARCHIEVEMENT_PKG IS -- Author : WANGWEI-202 -- Created : 2023/3/10 15:13:34 -- Purpose : 桌面霸屏项目基础数据生成包 - TYPE cur_type IS REF CURSOR; + TYPE CUR_TYPE IS REF CURSOR; -- 异常 DEPARTMENTCODE_EXCEPTION_CODE CONSTANT INTEGER := -20000; @@ -13,103 +13,126 @@ CREATE OR REPLACE PACKAGE telsale_archievement_dev_pkg IS CALLERCODE_EXCEPTION_CODE CONSTANT INTEGER := -20001; CALLERCODE_EXCEPTION_MSG CONSTANT VARCHAR2(100) := '坐席工号无效。'; - PROCEDURE department_archievement + PROCEDURE DEPARTMENT_ARCHIEVEMENT ( - a_department_code IN VARCHAR2, - a_attaching_rate OUT VARCHAR2, - a_renewal_rate OUT VARCHAR2, - a_total OUT INTEGER, - a_mensual_cur OUT cur_type + A_DEPARTMENT_CODE IN VARCHAR2, + A_ATTACHING_RATE OUT VARCHAR2, + A_ATTACHING_RATE_TARGET OUT VARCHAR2, + A_RENEWAL_RATE OUT VARCHAR2, + A_RENEWAL_RATE_TARGET OUT VARCHAR2, + A_TOTAL OUT INTEGER, + A_MENSUAL_CUR OUT CUR_TYPE ); - PROCEDURE caller_archievement + PROCEDURE CALLER_ARCHIEVEMENT ( - a_caller_code IN VARCHAR2, - a_attaching_rate OUT VARCHAR2, - a_renewal_rate OUT VARCHAR2, - a_total OUT INTEGER, - a_present_month OUT NUMBER, - a_mensual_cur OUT cur_type + A_CALLER_CODE IN VARCHAR2, + A_ATTACHING_RATE OUT VARCHAR2, + A_RENEWAL_RATE OUT VARCHAR2, + A_TOTAL OUT INTEGER, + A_PRESENT_MONTH OUT NUMBER, + A_MENSUAL_CUR OUT CUR_TYPE ); - PROCEDURE caller_arch_ranking_list + PROCEDURE CALLER_ARCH_RANKING_LIST ( - a_department_code IN VARCHAR2, - a_year IN VARCHAR2, - a_month IN VARCHAR2, - a_attaching_ranking_list OUT cur_type, - a_renewal_ranking_list OUT cur_type + A_DEPARTMENT_CODE IN VARCHAR2, + 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; / -CREATE OR REPLACE PACKAGE BODY TELSALE_ARCHIEVEMENT_dev_PKG IS +CREATE OR REPLACE PACKAGE BODY TELSALE_ARCHIEVEMENT_PKG IS + -- 部门业绩 PROCEDURE DEPARTMENT_ARCHIEVEMENT ( - A_DEPARTMENT_CODE IN VARCHAR2, - A_ATTACHING_RATE OUT VARCHAR2, - A_RENEWAL_RATE OUT VARCHAR2, - A_TOTAL OUT INTEGER, - A_MENSUAL_CUR OUT CUR_TYPE + A_DEPARTMENT_CODE IN VARCHAR2, + A_ATTACHING_RATE OUT VARCHAR2, + A_ATTACHING_RATE_TARGET OUT VARCHAR2, + A_RENEWAL_RATE OUT VARCHAR2, + A_RENEWAL_RATE_TARGET OUT VARCHAR2, + A_TOTAL OUT INTEGER, + A_MENSUAL_CUR OUT CUR_TYPE ) IS - --L_THIS_MONTH VARCHAR2(4); - --L_THIS_YEAR VARCHAR2(4); - L_FIRSTDAY DATE; - L_DEPARTMENT_NAME VARCHAR2(100); + L_FIRSTDAY DATE; + L_DEPARTMENT_NAME VARCHAR2(100); + L_RENEWAL_RATE_TARGET NUMBER; BEGIN - /*L_THIS_MONTH := TO_CHAR(SYSDATE, - 'mm'); - L_THIS_YEAR := TO_CHAR(SYSDATE, - 'yyyy');*/ L_FIRSTDAY := TO_DATE(TO_CHAR(SYSDATE, 'yyyy') || '-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss'); -- 获取部门名称 BEGIN - SELECT DEPARTMENT_NAME INTO L_DEPARTMENT_NAME FROM IDST0.BM_T BM WHERE BM.DEPARTMENT_CODE = A_DEPARTMENT_CODE; + SELECT DEPARTMENT_NAME + INTO L_DEPARTMENT_NAME + FROM IDST0.BM_T BM + WHERE BM.DEPARTMENT_CODE = A_DEPARTMENT_CODE; EXCEPTION -- 如果没有找到部门名称,说明代码错误,抛出异常 WHEN NO_DATA_FOUND THEN RAISE_APPLICATION_ERROR(DEPARTMENTCODE_EXCEPTION_CODE, DEPARTMENTCODE_EXCEPTION_MSG); END; - --车非渗透率 + + --车非渗透率&目标差距 BEGIN - SELECT round(dept.当月保费渗透率, + SELECT ROUND(DEPT.当月保费渗透率, + 2), + ROUND(DEPT.目标差距, 2) - INTO A_ATTACHING_RATE - FROM desktop_archievement_admin.BI机构渗透率跟踪表 dept - WHERE dept.部门 = L_DEPARTMENT_NAME; + INTO A_ATTACHING_RATE, + A_ATTACHING_RATE_TARGET + FROM DESKTOP_ARCHIEVEMENT_ADMIN.BI机构渗透率跟踪表 DEPT + WHERE DEPT.部门 = L_DEPARTMENT_NAME; + + --解决round导致小数缺0的问题 + SELECT DECODE(SUBSTR(A_ATTACHING_RATE_TARGET, + 1, + 1), + '.', + '0' || A_ATTACHING_RATE_TARGET, + A_ATTACHING_RATE_TARGET) + INTO A_ATTACHING_RATE_TARGET + FROM DUAL; EXCEPTION - WHEN no_data_found THEN - A_ATTACHING_RATE := 0; + WHEN NO_DATA_FOUND THEN + A_ATTACHING_RATE := '0.0'; + A_ATTACHING_RATE_TARGET := '0.0'; END; - --续保率 + + --续保率&目标差距 BEGIN - SELECT round(t."个车续保率(全月)(%)", + SELECT ROUND(t."个车续保率(序时)(%)", + 2), + ROUND(t."个车续保率(序时)(%)" - t."机构目标值1(%)", 2) - INTO A_RENEWAL_RATE - FROM BI机构当月个车续保率跟踪表 t - WHERE t.责任部门 = L_DEPARTMENT_NAME; + INTO A_RENEWAL_RATE, + A_RENEWAL_RATE_TARGET + FROM BI机构当月个车续保率跟踪表 T + WHERE T.责任部门 = L_DEPARTMENT_NAME; + + --解决round导致小数缺0的问题 + SELECT DECODE(SUBSTR(A_RENEWAL_RATE_TARGET, + 1, + 1), + '.', + '0' || A_RENEWAL_RATE_TARGET, + A_RENEWAL_RATE_TARGET) + INTO A_RENEWAL_RATE_TARGET + FROM DUAL; EXCEPTION - WHEN no_data_found THEN - A_RENEWAL_RATE := 0; + WHEN NO_DATA_FOUND THEN + A_RENEWAL_RATE := '0.0'; + A_RENEWAL_RATE_TARGET := '0.0'; END; + --总业绩 - BEGIN - SELECT ROUND(NVL(SUM(CF.车险个人客户保费 + CF.车非融合保费), - 0), - 0) - INTO A_TOTAL - FROM 坐席车非每日保费 CF - WHERE 部门代码 = A_DEPARTMENT_CODE - AND 签单日期 >= L_FIRSTDAY - AND 签单日期 <= SYSDATE; - EXCEPTION - WHEN no_data_found THEN - A_TOTAL := 0; - END; + A_TOTAL := 0; + --每月业绩 OPEN A_MENSUAL_CUR FOR SELECT CF.月份 MM, @@ -130,105 +153,89 @@ CREATE OR REPLACE PACKAGE BODY TELSALE_ARCHIEVEMENT_dev_PKG IS /*******************************************************/ -- 坐席业绩 - PROCEDURE caller_archievement + PROCEDURE CALLER_ARCHIEVEMENT ( - a_caller_code IN VARCHAR2, - a_attaching_rate OUT VARCHAR2, - a_renewal_rate OUT VARCHAR2, - a_total OUT INTEGER, - a_present_month OUT NUMBER, - a_mensual_cur OUT cur_type + A_CALLER_CODE IN VARCHAR2, + A_ATTACHING_RATE OUT VARCHAR2, + A_RENEWAL_RATE OUT VARCHAR2, + A_TOTAL OUT INTEGER, + A_PRESENT_MONTH OUT NUMBER, + A_MENSUAL_CUR OUT CUR_TYPE ) IS - l_caller_name VARCHAR2(100); - l_department_name VARCHAR2(100); - --l_this_month VARCHAR2(4); - l_this_year VARCHAR2(4); - --l_firstday DATE; - l_rownum INTEGER; + L_CALLER_NAME VARCHAR2(100); + L_DEPARTMENT_NAME VARCHAR2(100); + L_THIS_YEAR VARCHAR2(4); + L_ROWNUM INTEGER; BEGIN --查询坐席名称,和部门名称,验证代码 BEGIN - /*SELECT zx.saler_name, bm.department_name - INTO l_caller_name, l_department_name - FROM tele_saler zx, tele_saler_team team, idst0.bm_t bm - WHERE zx.saler_code = a_caller_code - AND zx.team_code = team.team_code - AND team.department_code = bm.department_code; - SELECT saler_name - INTO l_caller_name - FROM tele_saler - WHERE saler_code = a_caller_code;*/ - SELECT zx.人员姓名, - bm.department_name - INTO l_caller_name, - l_department_name - FROM twr_telsaler zx, - twr_telsaler_team t, - idst0.bm_t bm - WHERE zx.人员工号 = a_caller_code - AND zx.团队名称 = t.team_name - AND t.department_code = bm.department_code; + SELECT ZX.人员姓名, + BM.DEPARTMENT_NAME + INTO L_CALLER_NAME, + L_DEPARTMENT_NAME + FROM TWR_TELSALER ZX, + TWR_TELSALER_TEAM T, + IDST0.BM_T BM + WHERE ZX.人员工号 = A_CALLER_CODE + AND ZX.团队名称 = T.TEAM_NAME + AND T.DEPARTMENT_CODE = BM.DEPARTMENT_CODE; EXCEPTION -- 如果没有查询到坐席名称,说明代码有误,抛出异常 - WHEN no_data_found THEN - raise_application_error(CALLERCODE_EXCEPTION_CODE, + WHEN NO_DATA_FOUND THEN + RAISE_APPLICATION_ERROR(CALLERCODE_EXCEPTION_CODE, CALLERCODE_EXCEPTION_MSG); END; - --l_this_month := to_char(SYSDATE, - -- 'mm'); - l_this_year := to_char(SYSDATE, + L_THIS_YEAR := TO_CHAR(SYSDATE, 'yyyy'); - --l_firstday := to_date(l_this_year || '-01-01 00:00:00', - -- 'yyyy-mm-dd hh24:mi:ss'); --总车险保费 - SELECT round(nvl(SUM(cf.车险个人客户保费), + SELECT ROUND(NVL(SUM(CF.车险个人客户保费), 0), - 2) bf - INTO a_total - FROM 坐席车非每日保费 cf - WHERE cf.坐席名称 = l_caller_name - AND cf.部门 = l_department_name - AND cf.年份 = l_this_year; + 2) BF + INTO A_TOTAL + FROM 坐席车非每日保费 CF + WHERE CF.坐席名称 = L_CALLER_NAME + AND CF.部门 = L_DEPARTMENT_NAME + AND CF.年份 = L_THIS_YEAR; --渗透率 BEGIN - SELECT rownum, - round(nvl(t.当月保费渗透率, + SELECT ROWNUM, + ROUND(NVL(T.当月保费渗透率, 0), 2), - round(nvl(t."车险保费(万)" * 10000, + ROUND(NVL(t."车险保费(万)" * 10000, 0), 2) - INTO l_rownum, - a_attaching_rate, - a_present_month - FROM BI电销坐席车非渗透率跟踪表 t - WHERE t.经办 = l_caller_name - AND rownum = 1; + INTO L_ROWNUM, + A_ATTACHING_RATE, + A_PRESENT_MONTH + FROM BI电销坐席车非渗透率跟踪表 T + WHERE T.经办 = L_CALLER_NAME + AND ROWNUM = 1; EXCEPTION - WHEN no_data_found THEN - l_rownum := 1; - a_attaching_rate := 0.0; - a_present_month := 0.0; + WHEN NO_DATA_FOUND THEN + L_ROWNUM := 1; + A_ATTACHING_RATE := 0.0; + A_PRESENT_MONTH := 0.0; END; --续保率 BEGIN - SELECT rownum, - round(nvl(t."个车续保率(全月)(%)", + SELECT ROWNUM, + ROUND(NVL(t."个车续保率(全月)(%)", 0), 2) - INTO l_rownum, - a_renewal_rate - FROM BI电销坐席续保率跟踪表 t - WHERE t.责任人 = l_caller_name - AND rownum = 1; + INTO L_ROWNUM, + A_RENEWAL_RATE + FROM BI电销坐席续保率跟踪表 T + WHERE T.责任人 = L_CALLER_NAME + AND ROWNUM = 1; EXCEPTION - WHEN no_data_found THEN - l_rownum := 1; - a_renewal_rate := 0.0; + WHEN NO_DATA_FOUND THEN + L_ROWNUM := 1; + A_RENEWAL_RATE := 0.0; END; --每月业绩 @@ -238,8 +245,8 @@ CREATE OR REPLACE PACKAGE BODY TELSALE_ARCHIEVEMENT_dev_PKG IS 0), 0) BF FROM 坐席车非每日保费 CF - WHERE cf.坐席名称 = l_caller_name - AND cf.部门 = l_department_name + WHERE CF.坐席名称 = L_CALLER_NAME + AND CF.部门 = L_DEPARTMENT_NAME AND 签单日期 >= TO_DATE(TO_CHAR(SYSDATE, 'yyyy') || '-01-01 00:00:00', 'yyyy-mm-dd hh24:mi:ss') @@ -262,7 +269,10 @@ CREATE OR REPLACE PACKAGE BODY TELSALE_ARCHIEVEMENT_dev_PKG IS BEGIN -- 获取部门名称 BEGIN - SELECT DEPARTMENT_NAME INTO L_DEPARTMENT_NAME FROM IDST0.BM_T BM WHERE BM.DEPARTMENT_CODE = A_DEPARTMENT_CODE; + SELECT DEPARTMENT_NAME + INTO L_DEPARTMENT_NAME + FROM IDST0.BM_T BM + WHERE BM.DEPARTMENT_CODE = A_DEPARTMENT_CODE; EXCEPTION -- 如果没有找到部门名称,说明代码错误,抛出异常 WHEN NO_DATA_FOUND THEN @@ -271,49 +281,27 @@ CREATE OR REPLACE PACKAGE BODY TELSALE_ARCHIEVEMENT_dev_PKG IS END; -- 车非融合率排行榜 OPEN A_ATTACHING_RANKING_LIST FOR - SELECT rownum, - paihang.经办 AS caller_name, - paihang.xbl AS attaching_rate - FROM (SELECT t.经办, - round(t.当月保费渗透率, - 2) xbl - FROM BI电销坐席车非渗透率跟踪表 t - WHERE t.部门 = L_DEPARTMENT_NAME - ORDER BY t.当月保费渗透率 DESC) paihang; + SELECT ROWNUM, + PAIHANG.经办 AS CALLER_NAME, + PAIHANG.XBL AS ATTACHING_RATE + FROM (SELECT T.经办, + ROUND(T.当月保费渗透率, + 2) XBL + FROM BI电销坐席车非渗透率跟踪表 T + WHERE T.部门 = L_DEPARTMENT_NAME + ORDER BY T.当月保费渗透率 DESC) PAIHANG; -- 续保率排行榜 OPEN A_RENEWAL_RANKING_LIST FOR - SELECT rownum, - paihang.责任人 AS CALLER_NAME, - paihang.xbl AS RENEWAL_RATE - FROM (SELECT t.责任人, - round(t."个车续保率(全月)(%)", - 2) xbl - FROM BI电销坐席续保率跟踪表 t - WHERE t.责任部门 = L_DEPARTMENT_NAME - ORDER BY xbl DESC) paihang; - /*OPEN A_RENEWAL_RANKING_LIST FOR - SELECT rownum, - paihang.责任人 AS CALLER_NAME, - paihang.xbl AS RENEWAL_RATE - FROM (SELECT DISTINCT * - FROM (SELECT t.责任人, - round(t."个车续保率(全月)(%)", 2) xbl, - zuoxi.department_name - FROM BI电销坐席续保率跟踪表 t, - (SELECT DISTINCT t.saler_code, - t.saler_name, - t.team_code, - team.team, - bm.department_name - FROM tele_saler t, - tele_saler_team team, - idst0.bm_t bm - WHERE t.team_code = team.team_code - AND team.department_code = bm.department_code - AND bm.department_name = L_DEPARTMENT_NAME) zuoxi - WHERE t.责任人 = zuoxi.saler_name) xb - ORDER BY xb.department_name, xb.xbl DESC) paihang;*/ + SELECT ROWNUM, + PAIHANG.责任人 AS CALLER_NAME, + PAIHANG.XBL AS RENEWAL_RATE + FROM (SELECT T.责任人, + ROUND(t."个车续保率(全月)(%)", + 2) XBL + FROM BI电销坐席续保率跟踪表 T + WHERE T.责任部门 = L_DEPARTMENT_NAME + ORDER BY XBL DESC) PAIHANG; END; BEGIN NULL; diff --git a/code/鍚庣/desktop_archievement_backend/src/main/resources/mybatis/mapper/ArchievementMapper.xml b/code/鍚庣/desktop_archievement_backend/src/main/resources/mybatis/mapper/ArchievementMapper.xml index 2b8f51a..539e8bd 100644 --- a/code/鍚庣/desktop_archievement_backend/src/main/resources/mybatis/mapper/ArchievementMapper.xml +++ b/code/鍚庣/desktop_archievement_backend/src/main/resources/mybatis/mapper/ArchievementMapper.xml @@ -2,7 +2,7 @@