Compare commits
8 Commits
feature-da
...
7311ab5e2a
Author | SHA1 | Date | |
---|---|---|---|
7311ab5e2a | |||
0650227861 | |||
75a9c46c2e | |||
02ac5274e0 | |||
6f303eec03 | |||
d517c2e82a | |||
80ba8da7e0 | |||
1422c0b781 |
@@ -146,17 +146,28 @@ CREATE OR REPLACE PACKAGE BODY TELSALE_ARCHIEVEMENT_PKG IS
|
|||||||
a_mensual_cur OUT cur_type
|
a_mensual_cur OUT cur_type
|
||||||
) IS
|
) IS
|
||||||
l_caller_name VARCHAR2(100);
|
l_caller_name VARCHAR2(100);
|
||||||
l_this_month VARCHAR2(4);
|
l_department_name VARCHAR2(100);
|
||||||
|
--l_this_month VARCHAR2(4);
|
||||||
l_this_year VARCHAR2(4);
|
l_this_year VARCHAR2(4);
|
||||||
l_firstday DATE;
|
--l_firstday DATE;
|
||||||
l_rownum INTEGER;
|
l_rownum INTEGER;
|
||||||
BEGIN
|
BEGIN
|
||||||
--<2D><>ѯ<EFBFBD><D1AF>ϯ<EFBFBD><CFAF><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD>
|
--<2D><>ѯ<EFBFBD><D1AF>ϯ<EFBFBD><CFAF><EFBFBD>ƣ<EFBFBD><C6A3>Ͳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD><EFBFBD><EFBFBD>֤<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
BEGIN
|
BEGIN
|
||||||
SELECT saler_name
|
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
|
INTO l_caller_name
|
||||||
FROM tele_saler
|
FROM tele_saler
|
||||||
WHERE saler_code = a_caller_code;
|
WHERE saler_code = a_caller_code;*/
|
||||||
EXCEPTION
|
EXCEPTION
|
||||||
-- <20><><EFBFBD><EFBFBD>û<EFBFBD>в<EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>ϯ<EFBFBD><CFAF><EFBFBD>ƣ<EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׳<EFBFBD><D7B3>쳣
|
-- <20><><EFBFBD><EFBFBD>û<EFBFBD>в<EFBFBD>ѯ<EFBFBD><D1AF><EFBFBD><EFBFBD>ϯ<EFBFBD><CFAF><EFBFBD>ƣ<EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׳<EFBFBD><D7B3>쳣
|
||||||
WHEN no_data_found THEN
|
WHEN no_data_found THEN
|
||||||
@@ -164,12 +175,12 @@ CREATE OR REPLACE PACKAGE BODY TELSALE_ARCHIEVEMENT_PKG IS
|
|||||||
CALLERCODE_EXCEPTION_MSG);
|
CALLERCODE_EXCEPTION_MSG);
|
||||||
END;
|
END;
|
||||||
|
|
||||||
l_this_month := to_char(SYSDATE,
|
--l_this_month := to_char(SYSDATE,
|
||||||
'mm');
|
-- 'mm');
|
||||||
l_this_year := to_char(SYSDATE,
|
l_this_year := to_char(SYSDATE,
|
||||||
'yyyy');
|
'yyyy');
|
||||||
l_firstday := to_date(l_this_year || '-01-01 00:00:00',
|
--l_firstday := to_date(l_this_year || '-01-01 00:00:00',
|
||||||
'yyyy-mm-dd hh24:mi:ss');
|
-- 'yyyy-mm-dd hh24:mi:ss');
|
||||||
|
|
||||||
--<2D>ܳ<EFBFBD><DCB3>ձ<EFBFBD><D5B1><EFBFBD>
|
--<2D>ܳ<EFBFBD><DCB3>ձ<EFBFBD><D5B1><EFBFBD>
|
||||||
SELECT round(nvl(SUM(cf.<2E><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>),
|
SELECT round(nvl(SUM(cf.<2E><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>),
|
||||||
@@ -177,7 +188,8 @@ CREATE OR REPLACE PACKAGE BODY TELSALE_ARCHIEVEMENT_PKG IS
|
|||||||
2) bf
|
2) bf
|
||||||
INTO a_total
|
INTO a_total
|
||||||
FROM <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD> cf
|
FROM <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD> cf
|
||||||
WHERE cf.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD> = a_caller_code
|
WHERE cf.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD> = l_caller_name
|
||||||
|
AND cf.<2E><><EFBFBD><EFBFBD> = l_department_name
|
||||||
AND cf.<2E><><EFBFBD><EFBFBD> = l_this_year;
|
AND cf.<2E><><EFBFBD><EFBFBD> = l_this_year;
|
||||||
|
|
||||||
--<2D><><EFBFBD><CDB8>
|
--<2D><><EFBFBD><CDB8>
|
||||||
@@ -194,28 +206,7 @@ CREATE OR REPLACE PACKAGE BODY TELSALE_ARCHIEVEMENT_PKG IS
|
|||||||
FROM BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD> t
|
FROM BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD> t
|
||||||
WHERE t.<2E><><EFBFBD><EFBFBD> = l_caller_name
|
WHERE t.<2E><><EFBFBD><EFBFBD> = l_caller_name
|
||||||
AND rownum = 1;
|
AND rownum = 1;
|
||||||
/*SELECT decode(nvl(SUM(cf.<2E><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>),
|
|
||||||
0),
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
round(SUM(cf.<2E><><EFBFBD><EFBFBD><EFBFBD>ںϱ<DABA><CFB1><EFBFBD>) / SUM(cf.<2E><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>) * 100,
|
|
||||||
2))
|
|
||||||
INTO a_attaching_rate
|
|
||||||
FROM <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD> cf
|
|
||||||
WHERE cf.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD> = a_caller_code
|
|
||||||
AND cf.<2E><><EFBFBD><EFBFBD> = l_this_year
|
|
||||||
AND cf.<2E>·<EFBFBD> = l_this_month;*/
|
|
||||||
|
|
||||||
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
--<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
/*SELECT decode(nvl(SUM(xb.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>),
|
|
||||||
0),
|
|
||||||
0,
|
|
||||||
0,
|
|
||||||
round(SUM(xb.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>) / SUM(xb.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) * 100,
|
|
||||||
2)) xbl
|
|
||||||
INTO a_renewal_rate
|
|
||||||
FROM <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3> xb
|
|
||||||
WHERE xb.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD> = a_caller_code;*/
|
|
||||||
SELECT rownum,
|
SELECT rownum,
|
||||||
round(nvl(t."<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD>ȫ<EFBFBD>£<EFBFBD>(%)",
|
round(nvl(t."<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD>ȫ<EFBFBD>£<EFBFBD>(%)",
|
||||||
0),
|
0),
|
||||||
@@ -229,11 +220,12 @@ CREATE OR REPLACE PACKAGE BODY TELSALE_ARCHIEVEMENT_PKG IS
|
|||||||
--ÿ<><C3BF>ҵ<EFBFBD><D2B5>
|
--ÿ<><C3BF>ҵ<EFBFBD><D2B5>
|
||||||
OPEN A_MENSUAL_CUR FOR
|
OPEN A_MENSUAL_CUR FOR
|
||||||
SELECT CF.<2E>·<EFBFBD> MM,
|
SELECT CF.<2E>·<EFBFBD> MM,
|
||||||
ROUND(NVL(SUM(CF.<2E><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD> + CF.<2E><><EFBFBD><EFBFBD><EFBFBD>ںϱ<DABA><CFB1><EFBFBD>),
|
ROUND(NVL(SUM(CF.<2E><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>),
|
||||||
0),
|
0),
|
||||||
0) BF
|
0) BF
|
||||||
FROM <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD> CF
|
FROM <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD> CF
|
||||||
WHERE cf.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD> = a_caller_code
|
WHERE cf.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD> = l_caller_name
|
||||||
|
AND cf.<2E><><EFBFBD><EFBFBD> = l_department_name
|
||||||
AND ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> >= TO_DATE(TO_CHAR(SYSDATE,
|
AND ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> >= 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')
|
||||||
|
@@ -52,7 +52,7 @@ SELECT
|
|||||||
GROUP BY <EFBFBD>·<EFBFBD>,
|
GROUP BY <EFBFBD>·<EFBFBD>,
|
||||||
<EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD><EFBFBD><EFBFBD>,
|
<EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD><EFBFBD><EFBFBD>,
|
||||||
<EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
<EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
HAVING <EFBFBD>·<EFBFBD> = '06<EFBFBD><EFBFBD>'
|
HAVING <EFBFBD>·<EFBFBD> = '10<EFBFBD><EFBFBD>'
|
||||||
ORDER BY <EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD><EFBFBD><EFBFBD>,
|
ORDER BY <EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD><EFBFBD><EFBFBD>,
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DESC;
|
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DESC;
|
||||||
|
|
||||||
@@ -61,7 +61,7 @@ SELECT
|
|||||||
2) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
2) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
FROM <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><EFBFBD><EFBFBD>
|
FROM <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><EFBFBD><EFBFBD>
|
||||||
WHERE <EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD><EFBFBD><EFBFBD> = 'QDI'
|
WHERE <EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD><EFBFBD><EFBFBD> = 'QDI'
|
||||||
AND <EFBFBD>·<EFBFBD> = '05'
|
AND <EFBFBD>·<EFBFBD> = '10'
|
||||||
AND <EFBFBD><EFBFBD><EFBFBD><EFBFBD> = '2023'
|
AND <EFBFBD><EFBFBD><EFBFBD><EFBFBD> = '2023'
|
||||||
GROUP BY <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
GROUP BY <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
ORDER BY <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DESC;
|
ORDER BY <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DESC;
|
||||||
@@ -75,3 +75,30 @@ SELECT
|
|||||||
WHERE xb.<EFBFBD><EFBFBD><EFBFBD><EFBFBD> = '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
WHERE xb.<EFBFBD><EFBFBD><EFBFBD><EFBFBD> = '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'
|
||||||
GROUP BY <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
GROUP BY <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
||||||
ORDER BY <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> DESC;
|
ORDER BY <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> DESC;
|
||||||
|
-------------------------------------
|
||||||
|
SELECT zx.saler_name,
|
||||||
|
bm.department_name
|
||||||
|
FROM tele_saler zx,
|
||||||
|
tele_saler_team team,
|
||||||
|
idst0.bm_t bm
|
||||||
|
WHERE zx.saler_name = '<EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD>'
|
||||||
|
AND zx.team_code = team.team_code
|
||||||
|
AND team.department_code = bm.department_code;
|
||||||
|
----------------------------------------
|
||||||
|
/*
|
||||||
|
truncate table BI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD>ٱ<EFBFBD>;
|
||||||
|
*/
|
||||||
|
|
||||||
|
SELECT *
|
||||||
|
FROM BI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD>ٱ<EFBFBD> t
|
||||||
|
WHERE t.<EFBFBD><EFBFBD><EFBFBD><EFBFBD> = '<EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD>';
|
||||||
|
|
||||||
|
SELECT *
|
||||||
|
FROM BI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD>ٱ<EFBFBD>
|
||||||
|
WHERE <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = '<EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD>';
|
||||||
|
|
||||||
|
SELECT *
|
||||||
|
FROM BI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD>ٱ<EFBFBD>;
|
||||||
|
|
||||||
|
SELECT *
|
||||||
|
FROM BI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD>ٱ<EFBFBD>;
|
||||||
|
@@ -2,18 +2,28 @@
|
|||||||
* @Author: Kane
|
* @Author: Kane
|
||||||
* @Date: 2023-02-28 19:25:30
|
* @Date: 2023-02-28 19:25:30
|
||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @FilePath: /task_schedule/src/assets/css/public/global.scss
|
* @FilePath: /task_schedule/src/assets/css/public/variables.scss
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
* Copyright (c) ${2022} by Kane, All Rights Reserved.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
// color
|
// color
|
||||||
|
/*
|
||||||
$color-bg-01: #fecb96;
|
$color-bg-01: #fecb96;
|
||||||
$color-bg-02: #f7954e;
|
$color-bg-02: #f7954e;
|
||||||
$color-bg-03: #f27620;
|
$color-bg-03: #f27620;
|
||||||
$color-bg-04: #da3703;
|
$color-bg-04: #da3703;
|
||||||
$color-bg-05: #ba1800;
|
$color-bg-05: #ba1800;
|
||||||
|
*/
|
||||||
|
|
||||||
|
$color-bg-01: #00b2f8;
|
||||||
|
$color-bg-02: #00b0fb;
|
||||||
|
$color-bg-03: #0279ea;
|
||||||
|
$color-bg-04: #046ed6;
|
||||||
|
$color-bg-05: #033eb6;
|
||||||
|
|
||||||
|
$color-title-font: #046ed6;
|
||||||
|
|
||||||
$color-charts-bg: #ffffff9f;
|
$color-charts-bg: #ffffff9f;
|
||||||
$color-honorlist-bg: rgba(255, 255, 255, 0.3);
|
$color-honorlist-bg: rgba(255, 255, 255, 0.3);
|
||||||
|
@@ -12,6 +12,7 @@
|
|||||||
<el-progress
|
<el-progress
|
||||||
type="circle"
|
type="circle"
|
||||||
:percentage="ui.percentage"
|
:percentage="ui.percentage"
|
||||||
|
status="success"
|
||||||
>
|
>
|
||||||
<template #default>
|
<template #default>
|
||||||
<span class="percentage-label">{{ ui.indicator }}</span>
|
<span class="percentage-label">{{ ui.indicator }}</span>
|
||||||
|
@@ -15,10 +15,13 @@
|
|||||||
alt=""
|
alt=""
|
||||||
>
|
>
|
||||||
<div class="title-wrapper">
|
<div class="title-wrapper">
|
||||||
<span>"消8灭70"突围战</span>
|
<span>“消 8 灭 6 突围战”</span>
|
||||||
<span>{{ props.month }}月入营坐席</span>
|
<span>指标落后入营坐席</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="telsaler-list-wrapper">
|
||||||
|
<span>开发中……</span>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
@@ -46,6 +49,8 @@ export default {
|
|||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.dishonorlist-wrapper {
|
.dishonorlist-wrapper {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
height: 240px;
|
height: 240px;
|
||||||
width: 360px;
|
width: 360px;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
@@ -55,10 +60,16 @@ export default {
|
|||||||
|
|
||||||
padding: 10px;
|
padding: 10px;
|
||||||
|
|
||||||
|
>*+* {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
.banner-wrapper {
|
.banner-wrapper {
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: stretch;
|
align-items: stretch;
|
||||||
|
height: 65px;
|
||||||
|
flex-grow: 0;
|
||||||
|
|
||||||
img {
|
img {
|
||||||
// width: 70px;
|
// width: 70px;
|
||||||
@@ -80,4 +91,24 @@ export default {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.telsaler-list-wrapper {
|
||||||
|
flex-grow: 1;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
span {
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
color: rgb(101, 140, 194);
|
||||||
|
margin-top: 0px;
|
||||||
|
|
||||||
|
font: {
|
||||||
|
size: 2rem;
|
||||||
|
family: "FZ-ZHUOHEI";
|
||||||
|
weight: 100;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@@ -9,38 +9,17 @@
|
|||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<div class="honorlist-wrapper">
|
<div class="honorlist-wrapper">
|
||||||
<span class="title">“90俱乐部”{{ $props.month }}月入围坐席</span>
|
|
||||||
<div class="reward-wrapper">
|
|
||||||
<div class="leading-reward-wrapper">
|
|
||||||
<div class="banner-wrapper">
|
<div class="banner-wrapper">
|
||||||
<img
|
<img
|
||||||
src="@/assets/img/ranking/medal.png"
|
src="@/assets/img/ranking/medal.png"
|
||||||
alt="领跑奖"
|
alt=""
|
||||||
>
|
>
|
||||||
<span>领跑奖</span>
|
<div class="title-wrapper">
|
||||||
</div>
|
<span>“90俱乐部”标杆坐席</span>
|
||||||
<div class="gainer-wrapper">
|
|
||||||
<span
|
|
||||||
v-for="gainer in ui.leadingReward"
|
|
||||||
:key="gainer"
|
|
||||||
>{{ gainer }}</span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="advance-reward-wrapper">
|
|
||||||
<div class="banner-wrapper">
|
|
||||||
<img
|
|
||||||
src="@/assets/img/ranking/copper_medal.png"
|
|
||||||
alt="飞跃奖"
|
|
||||||
>
|
|
||||||
<span>飞跃奖</span>
|
|
||||||
</div>
|
|
||||||
<div class="gainer-wrapper">
|
|
||||||
<span
|
|
||||||
v-for="gainer in ui.advanceReward"
|
|
||||||
:key="gainer"
|
|
||||||
>{{ gainer }}</span>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="telsaler-list-wrapper">
|
||||||
|
<span>开发中……</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
@@ -81,6 +60,8 @@ export default {
|
|||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
.honorlist-wrapper {
|
.honorlist-wrapper {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
height: 240px;
|
height: 240px;
|
||||||
width: 360px;
|
width: 360px;
|
||||||
border-radius: 5px;
|
border-radius: 5px;
|
||||||
@@ -93,48 +74,48 @@ export default {
|
|||||||
>*+* {
|
>*+* {
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.title {
|
|
||||||
display: block;
|
|
||||||
text-align: center;
|
|
||||||
|
|
||||||
font: {
|
|
||||||
family: "FZ-ZHUOHEI";
|
|
||||||
size: 1.4rem;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
color: goldenrod;
|
.banner-wrapper {
|
||||||
}
|
|
||||||
|
|
||||||
.reward-wrapper {
|
|
||||||
width: 100%;
|
|
||||||
|
|
||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: stretch;
|
align-items: center;
|
||||||
|
height: 65px;
|
||||||
|
flex-grow: 0;
|
||||||
|
|
||||||
>*+* {
|
img {
|
||||||
margin-left: 10px;
|
width: 65px;
|
||||||
|
height: 65px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.leading-reward-wrapper {
|
.title-wrapper {
|
||||||
width: 165px;
|
|
||||||
height: 100%;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
.advance-reward-wrapper {
|
|
||||||
width: 165px;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
span {
|
span {
|
||||||
display: block;
|
display: block;
|
||||||
|
|
||||||
margin-top: 5px;
|
|
||||||
|
|
||||||
text-align: center;
|
text-align: center;
|
||||||
color: #fff;
|
color: rgb(245, 178, 11);
|
||||||
|
margin-top: 0px;
|
||||||
|
|
||||||
|
font: {
|
||||||
|
size: 1.65rem;
|
||||||
|
family: "FZ-ZHUOHEI";
|
||||||
|
weight: 100;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.telsaler-list-wrapper {
|
||||||
|
flex-grow: 1;
|
||||||
|
display: flex;
|
||||||
|
justify-content: center;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
span {
|
||||||
|
display: block;
|
||||||
|
text-align: center;
|
||||||
|
color: rgb(101, 140, 194);
|
||||||
|
margin-top: 0px;
|
||||||
|
|
||||||
font: {
|
font: {
|
||||||
size: 2rem;
|
size: 2rem;
|
||||||
@@ -142,30 +123,5 @@ export default {
|
|||||||
weight: 100;
|
weight: 100;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.banner-wrapper {
|
|
||||||
display: flex;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
|
|
||||||
img {
|
|
||||||
width: 30px;
|
|
||||||
height: 30px;
|
|
||||||
}
|
|
||||||
|
|
||||||
span {
|
|
||||||
display: inline-block;
|
|
||||||
text-align: center;
|
|
||||||
color: #fff;
|
|
||||||
margin-top: 0px;
|
|
||||||
|
|
||||||
font: {
|
|
||||||
size: 1.5rem;
|
|
||||||
family: "FZ-ZHUOHEI";
|
|
||||||
weight: 100;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@@ -42,7 +42,7 @@
|
|||||||
align="center"
|
align="center"
|
||||||
>
|
>
|
||||||
<template #default="ranking">
|
<template #default="ranking">
|
||||||
<span class="rankinglist-index">{{ ranking.row.appraiseValue }}</span>
|
<span class="rankinglist-index">{{ ranking.row.appraiseValue }}%</span>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
@@ -31,6 +31,24 @@ interface ImportBIReportResponse
|
|||||||
importedCount: number,
|
importedCount: number,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// BI坐席渗透率报表记录
|
||||||
|
interface BITelsalerAttachingRateReportRecord
|
||||||
|
{
|
||||||
|
departmentName: string;
|
||||||
|
telsalerName: string;
|
||||||
|
motoPremium: number;
|
||||||
|
nomotoPremium: number;
|
||||||
|
attachingRatePresentMonth: number;
|
||||||
|
attachingRateChange: number;
|
||||||
|
}
|
||||||
|
|
||||||
|
interface QueryBITelsalerAttachingRateReportResponse
|
||||||
|
{
|
||||||
|
success: boolean,
|
||||||
|
message: string,
|
||||||
|
records: BITelsalerAttachingRateReportRecord[];
|
||||||
|
}
|
||||||
|
|
||||||
type ImportBIReportResponseHandler = ( response: ImportBIReportResponse, error?: any ) => void;
|
type ImportBIReportResponseHandler = ( response: ImportBIReportResponse, error?: any ) => void;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -75,5 +93,7 @@ export {
|
|||||||
type ImportBIReportRequest,
|
type ImportBIReportRequest,
|
||||||
type ImportBIReportResponse,
|
type ImportBIReportResponse,
|
||||||
type ImportBIReportResponseHandler,
|
type ImportBIReportResponseHandler,
|
||||||
|
type BITelsalerAttachingRateReportRecord,
|
||||||
|
type QueryBITelsalerAttachingRateReportResponse,
|
||||||
importBIReport
|
importBIReport
|
||||||
};
|
};
|
||||||
|
@@ -384,7 +384,7 @@ export default {
|
|||||||
size: 90px;
|
size: 90px;
|
||||||
}
|
}
|
||||||
|
|
||||||
color: $color-bg-04;
|
color: $color-title-font;
|
||||||
text-shadow: #feebb1 0px 0px,
|
text-shadow: #feebb1 0px 0px,
|
||||||
#feebb1 5px 0px,
|
#feebb1 5px 0px,
|
||||||
#feebb1 -5px -0px,
|
#feebb1 -5px -0px,
|
||||||
|
@@ -9,36 +9,12 @@
|
|||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<div class="data_management_wrapper">
|
<div class="data_management_wrapper">
|
||||||
<!-- <div class="telsaler-dataupload-wrapper">
|
|
||||||
<el-upload
|
|
||||||
v-model="ui.fileList"
|
|
||||||
drag
|
|
||||||
action="http://localhost:8080/desktop_archievement_backend/file/file-upload.do"
|
|
||||||
:on-preview="handlePreview"
|
|
||||||
:on-remove="handleRemove"
|
|
||||||
:on-success="handleUploadSuccess"
|
|
||||||
:before-remove="beforeRemove"
|
|
||||||
:limit="1"
|
|
||||||
:on-exceed="handleExceed"
|
|
||||||
:data="ui.uploadData"
|
|
||||||
name="files"
|
|
||||||
>
|
|
||||||
<el-button type="primary">
|
|
||||||
上传
|
|
||||||
</el-button>
|
|
||||||
<template #tip>
|
|
||||||
<div class="el-upload__tip">
|
|
||||||
文件不能大于100MB。
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
</el-upload>
|
|
||||||
</div> -->
|
|
||||||
<el-tabs>
|
<el-tabs>
|
||||||
<el-tab-pane label="坐席车非渗透率">
|
<el-tab-pane label="坐席车非渗透率">
|
||||||
<TelsalerAttachingRateView />
|
<TelsalerAttachingRateView />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="坐席续保率">
|
<el-tab-pane label="坐席续保率">
|
||||||
坐席车非渗透率
|
<TelsalerRenewalRateView />
|
||||||
</el-tab-pane>
|
</el-tab-pane>
|
||||||
<el-tab-pane label="机构">
|
<el-tab-pane label="机构">
|
||||||
坐席车非渗透率
|
坐席车非渗透率
|
||||||
@@ -50,9 +26,10 @@
|
|||||||
import { ref, reactive } from "vue";
|
import { ref, reactive } from "vue";
|
||||||
import { ElMessage, ElMessageBox, type UploadFile, type UploadFiles, type UploadProps, type UploadUserFile } from "element-plus";
|
import { ElMessage, ElMessageBox, type UploadFile, type UploadFiles, type UploadProps, type UploadUserFile } from "element-plus";
|
||||||
import TelsalerAttachingRateView from "@/views/data/bi/TelsalerAttachingRateView.vue";
|
import TelsalerAttachingRateView from "@/views/data/bi/TelsalerAttachingRateView.vue";
|
||||||
|
import TelsalerRenewalRateView from "@/views/data/bi/TelsalerRenewalRateView.vue";
|
||||||
export default {
|
export default {
|
||||||
name: "DataManagement",
|
name: "DataManagement",
|
||||||
components: { TelsalerAttachingRateView, },
|
components: { TelsalerAttachingRateView, TelsalerRenewalRateView, },
|
||||||
setup()
|
setup()
|
||||||
{
|
{
|
||||||
const ui = reactive({
|
const ui = reactive({
|
||||||
|
@@ -62,7 +62,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { reactive, ref } from "vue";
|
import { reactive, ref, onBeforeMount } from "vue";
|
||||||
import {
|
import {
|
||||||
type BIReportType,
|
type BIReportType,
|
||||||
type ImportBIReportRequest,
|
type ImportBIReportRequest,
|
||||||
@@ -92,10 +92,10 @@ export default {
|
|||||||
reportType: {
|
reportType: {
|
||||||
type: Number,
|
type: Number,
|
||||||
require: true,
|
require: true,
|
||||||
default: (): number => -9999,
|
default: (): number => 0,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
setup()
|
setup( props )
|
||||||
{
|
{
|
||||||
const ui: UI = reactive({
|
const ui: UI = reactive({
|
||||||
showUI: false,
|
showUI: false,
|
||||||
@@ -214,6 +214,11 @@ export default {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
onBeforeMount((): void =>
|
||||||
|
{
|
||||||
|
ui.selectedReportType = props.reportType;
|
||||||
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
ui,
|
ui,
|
||||||
onUploadSuccess,
|
onUploadSuccess,
|
||||||
|
@@ -81,7 +81,7 @@
|
|||||||
:close-on-press-escape="false"
|
:close-on-press-escape="false"
|
||||||
:show-close="true"
|
:show-close="true"
|
||||||
>
|
>
|
||||||
<BiDataUploadView />
|
<BiDataUploadView :report-type="0" />
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@@ -1,30 +1,136 @@
|
|||||||
src/views/data/bi/TelsalerAttachingRateView.vue<!--
|
<!--
|
||||||
* @Author: Kane
|
* @Author: Kane
|
||||||
* @Date: 2023-10-17 14:41:39
|
* @Date: 2023-10-17 23:31:19
|
||||||
* @LastEditors: Kane
|
* @LastEditors: Kane
|
||||||
* @FilePath: /task_schedule/src/views/data/TelsalerAttachingRateView.vue
|
* @FilePath: /task_schedule/src/views/data/bi/TelsalerRenewalRateView.vue
|
||||||
* @Description:
|
* @Description:
|
||||||
*
|
*
|
||||||
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
||||||
-->
|
-->
|
||||||
<template>
|
<template>
|
||||||
<div class="wrapper" />
|
<div class="wrapper">
|
||||||
|
<el-row :gutter="10">
|
||||||
|
<el-col :span="24">
|
||||||
|
<el-button
|
||||||
|
type="warning"
|
||||||
|
icon="Upload"
|
||||||
|
@click="showUploadFileDialog"
|
||||||
|
>
|
||||||
|
上传
|
||||||
|
</el-button>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
<el-table
|
||||||
|
border
|
||||||
|
stripe
|
||||||
|
style="width:100%;"
|
||||||
|
>
|
||||||
|
<el-table-column
|
||||||
|
type="selection"
|
||||||
|
align="center"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="部门"
|
||||||
|
align="center"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="责任人"
|
||||||
|
align="center"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="到期数-全月"
|
||||||
|
align="center"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="个车续保率(序时)(%)"
|
||||||
|
align="center"
|
||||||
|
/>
|
||||||
|
<el-table-column
|
||||||
|
label="个车续保率(全月)(%)"
|
||||||
|
align="center"
|
||||||
|
/>
|
||||||
|
</el-table>
|
||||||
|
<div class="pagination_wrapper">
|
||||||
|
<el-pagination
|
||||||
|
v-model="ui.tableCurrentPageIndex"
|
||||||
|
class="pull_left"
|
||||||
|
size="small"
|
||||||
|
background
|
||||||
|
:page-size="ui.tablePageSize"
|
||||||
|
:page-sizes="[10, 20, 50, 100]"
|
||||||
|
layout="total, sizes, prev, pager, next, jumper"
|
||||||
|
:total="0"
|
||||||
|
@current-change="onCurrentPageIndexChange"
|
||||||
|
@size-change="onTablePageSizeChange"
|
||||||
|
/>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="upload-dialog-wrapper"
|
||||||
|
>
|
||||||
|
<el-dialog
|
||||||
|
v-model="ui.showUploadDialog"
|
||||||
|
title="上传报表"
|
||||||
|
width="600px"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
:close-on-press-escape="false"
|
||||||
|
:show-close="true"
|
||||||
|
>
|
||||||
|
<BiDataUploadView :report-type="1" />
|
||||||
|
</el-dialog>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
</template>
|
</template>
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import { reactive } from "vue";
|
import { reactive } from "vue";
|
||||||
|
import BiDataUploadView from "@/views/data/bi/BiDataUploadView.vue";
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
name: "TelsalerAttachingRateView",
|
name: "TelsalerAttachingRateView",
|
||||||
|
components: { BiDataUploadView, },
|
||||||
setup()
|
setup()
|
||||||
{
|
{
|
||||||
const ui = reactive({
|
const ui = reactive({
|
||||||
showUI: true,
|
showUI: true,
|
||||||
|
showUploadDialog: false,
|
||||||
|
tableCurrentPageIndex: 1,
|
||||||
|
tablePageSize: 10,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
const showUploadFileDialog = (): void =>
|
||||||
|
{
|
||||||
|
ui.showUploadDialog = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
const onCurrentPageIndexChange = ( index: number ): void =>
|
||||||
|
{
|
||||||
|
ui.tableCurrentPageIndex = index;
|
||||||
|
};
|
||||||
|
|
||||||
|
const onTablePageSizeChange = ( pageSize: number ): void =>
|
||||||
|
{
|
||||||
|
ui.tablePageSize = pageSize;
|
||||||
|
};
|
||||||
|
|
||||||
|
return {
|
||||||
|
ui,
|
||||||
|
showUploadFileDialog,
|
||||||
|
onCurrentPageIndexChange,
|
||||||
|
onTablePageSizeChange,
|
||||||
|
};
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
.wrapper {
|
.wrapper {
|
||||||
margin: 10px;
|
margin: 10px;
|
||||||
|
|
||||||
|
>*+* {
|
||||||
|
margin-top: 10px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination_wrapper {
|
||||||
|
display: flex;
|
||||||
|
justify-content: flex-end;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
@@ -0,0 +1,21 @@
|
|||||||
|
/*
|
||||||
|
* @Author: Kane
|
||||||
|
* @Date: 2023-11-01 15:50:40
|
||||||
|
* @LastEditors: Kane
|
||||||
|
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/mapper/QueryBIArchievementDataMapper.java
|
||||||
|
* @Description:
|
||||||
|
*
|
||||||
|
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
||||||
|
*/
|
||||||
|
package com.cpic.xim.mybatis.mapper;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import com.cpic.xim.mybatis.pojo.BITelsalerAttachingRateRecord;
|
||||||
|
import com.cpic.xim.mybatis.pojo.BITelsalerRenewalRateRecord;
|
||||||
|
|
||||||
|
public interface QueryBIArchievementDataMapper
|
||||||
|
{
|
||||||
|
public ArrayList<BITelsalerAttachingRateRecord> queryBITelsalerAttachingRate();
|
||||||
|
|
||||||
|
public ArrayList<BITelsalerRenewalRateRecord> queryBITesalerRenewalRate();
|
||||||
|
}
|
@@ -47,19 +47,19 @@ public class BITelsalerAttachingRateRecord
|
|||||||
private double attachingRateChange;
|
private double attachingRateChange;
|
||||||
|
|
||||||
// 当月客户渗透率
|
// 当月客户渗透率
|
||||||
@JsonProperty( "customerHandleRateCell" )
|
@JsonProperty( "customerHandleRate" )
|
||||||
private double customerHandleRate;
|
private double customerHandleRate;
|
||||||
|
|
||||||
// 客户渗透率环比上月
|
// 客户渗透率环比上月
|
||||||
@JsonProperty( "customerHandleRateChangeCell" )
|
@JsonProperty( "customerHandleRateChange" )
|
||||||
private double customerHandleRateChange;
|
private double customerHandleRateChange;
|
||||||
|
|
||||||
// 当月车非客均保费
|
// 当月车非客均保费
|
||||||
@JsonProperty( "noMotoPremiumPerCustomerCell" )
|
@JsonProperty( "noMotoPremiumPerCustomer" )
|
||||||
private double noMotoPremiumPerCustomer;
|
private double noMotoPremiumPerCustomer;
|
||||||
|
|
||||||
// 客均保费环比上月
|
// 客均保费环比上月
|
||||||
@JsonProperty( "noMotoPremiumPerCustomerChangeCell" )
|
@JsonProperty( "noMotoPremiumPerCustomerChange" )
|
||||||
private double noMotoPremiumPerCustomerChange;
|
private double noMotoPremiumPerCustomerChange;
|
||||||
|
|
||||||
public BITelsalerAttachingRateRecord( String departmentName, LocalDate summaryDate,
|
public BITelsalerAttachingRateRecord( String departmentName, LocalDate summaryDate,
|
||||||
|
@@ -0,0 +1,74 @@
|
|||||||
|
/*
|
||||||
|
* @Author: Kane
|
||||||
|
* @Date: 2023-11-01 16:48:56
|
||||||
|
* @LastEditors: Kane
|
||||||
|
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/archievement/bi/BIReportController.java
|
||||||
|
* @Description: BI报表相关的controller
|
||||||
|
*
|
||||||
|
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
||||||
|
*/
|
||||||
|
package com.cpic.xim.web.controllers.archievement.bi;
|
||||||
|
|
||||||
|
import java.io.IOException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import org.apache.ibatis.exceptions.PersistenceException;
|
||||||
|
import org.apache.ibatis.session.SqlSession;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMapping;
|
||||||
|
import org.springframework.web.bind.annotation.RequestMethod;
|
||||||
|
import org.springframework.web.bind.annotation.ResponseBody;
|
||||||
|
import com.cpic.xim.mybatis.mapper.QueryBIArchievementDataMapper;
|
||||||
|
import com.cpic.xim.mybatis.pojo.BIDepartmentAttachingRateRecord;
|
||||||
|
import com.cpic.xim.mybatis.pojo.BITelsalerAttachingRateRecord;
|
||||||
|
import com.cpic.xim.mybatis.utils.MybatisUtils;
|
||||||
|
|
||||||
|
@Controller
|
||||||
|
@RequestMapping( method = RequestMethod.POST, path = "/archievement" )
|
||||||
|
public class BIReportController
|
||||||
|
{
|
||||||
|
private static Logger logger = LoggerFactory.getLogger( BIReportController.class );
|
||||||
|
|
||||||
|
@PostMapping( path = "/bi_telsaler_attachingrate.do" )
|
||||||
|
@ResponseBody
|
||||||
|
QueryTelsalerAttachingRateReportResponse queryTelsalerAttachingRateRepor()
|
||||||
|
{
|
||||||
|
QueryTelsalerAttachingRateReportResponse response =
|
||||||
|
new QueryTelsalerAttachingRateReportResponse();
|
||||||
|
SqlSession session = null;
|
||||||
|
QueryBIArchievementDataMapper mapper = null;
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
session = MybatisUtils.getSqlSession();
|
||||||
|
mapper = session.getMapper( QueryBIArchievementDataMapper.class );
|
||||||
|
|
||||||
|
ArrayList<BITelsalerAttachingRateRecord> records =
|
||||||
|
mapper.queryBITelsalerAttachingRate();
|
||||||
|
|
||||||
|
response.setSuccess( true );
|
||||||
|
response.setMessage( "查询成功" );
|
||||||
|
response.setRecords( records );
|
||||||
|
}
|
||||||
|
catch ( IOException error )
|
||||||
|
{
|
||||||
|
logger.error("查询BI坐席渗透率报表出现IOException异常,异常内容:", error);
|
||||||
|
|
||||||
|
response.setSuccess( false );
|
||||||
|
response.setMessage( "查询失败,原因" + error.getMessage() );
|
||||||
|
response.setRecords( null );
|
||||||
|
}
|
||||||
|
catch ( PersistenceException error )
|
||||||
|
{
|
||||||
|
logger.error("查询BI坐席渗透率报表出现PersistenceException异常,异常内容:", error);
|
||||||
|
|
||||||
|
response.setSuccess( false );
|
||||||
|
response.setMessage( "查询失败,原因" + error.getMessage() );
|
||||||
|
response.setRecords( null );
|
||||||
|
}
|
||||||
|
|
||||||
|
return response;
|
||||||
|
}
|
||||||
|
}
|
@@ -0,0 +1,82 @@
|
|||||||
|
/*
|
||||||
|
* @Author: Kane
|
||||||
|
* @Date: 2023-11-01 16:51:53
|
||||||
|
* @LastEditors: Kane
|
||||||
|
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/archievement/bi/QueryTelsalerAttachingRateReportResponse.java
|
||||||
|
* @Description:
|
||||||
|
*
|
||||||
|
* Copyright (c) ${2023} by Kane, All Rights Reserved.
|
||||||
|
*/
|
||||||
|
package com.cpic.xim.web.controllers.archievement.bi;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import com.cpic.xim.mybatis.pojo.BITelsalerAttachingRateRecord;
|
||||||
|
import com.cpic.xim.web.controllers.QueryResponse;
|
||||||
|
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||||
|
|
||||||
|
public class QueryTelsalerAttachingRateReportResponse extends QueryResponse
|
||||||
|
{
|
||||||
|
@JsonProperty("records")
|
||||||
|
ArrayList<BITelsalerAttachingRateRecord> records;
|
||||||
|
|
||||||
|
public QueryTelsalerAttachingRateReportResponse( boolean success, String message,
|
||||||
|
ArrayList<BITelsalerAttachingRateRecord> records )
|
||||||
|
{
|
||||||
|
super( success, message );
|
||||||
|
this.records = records;
|
||||||
|
}
|
||||||
|
|
||||||
|
public QueryTelsalerAttachingRateReportResponse()
|
||||||
|
{
|
||||||
|
super( false, "" );
|
||||||
|
|
||||||
|
this.records = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ArrayList<BITelsalerAttachingRateRecord> getRecords()
|
||||||
|
{
|
||||||
|
return records;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setRecords( ArrayList<BITelsalerAttachingRateRecord> records )
|
||||||
|
{
|
||||||
|
this.records = records;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString()
|
||||||
|
{
|
||||||
|
return "QueryTelsalerAttachingRateReportResponse [records=" + records + "]";
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode()
|
||||||
|
{
|
||||||
|
final int prime = 31;
|
||||||
|
int result = super.hashCode();
|
||||||
|
result = prime * result + ((records == null) ? 0 : records.hashCode());
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals( Object obj )
|
||||||
|
{
|
||||||
|
if ( this == obj )
|
||||||
|
return true;
|
||||||
|
if ( !super.equals( obj ) )
|
||||||
|
return false;
|
||||||
|
if ( getClass() != obj.getClass() )
|
||||||
|
return false;
|
||||||
|
QueryTelsalerAttachingRateReportResponse other =
|
||||||
|
(QueryTelsalerAttachingRateReportResponse) obj;
|
||||||
|
if ( records == null )
|
||||||
|
{
|
||||||
|
if ( other.records != null )
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
else if ( !records.equals( other.records ) )
|
||||||
|
return false;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@@ -0,0 +1,63 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "https://mybatis.org/dtd/mybatis-3-mapper.dtd">
|
||||||
|
<mapper namespace="com.cpic.xim.mybatis.mapper.QueryBIArchievementDataMapper">
|
||||||
|
|
||||||
|
<!-- 查询坐席车非渗透率报表 -->
|
||||||
|
<select id="queryBITelsalerAttachingRate" resultMap="BITelsalerAttachingRate">
|
||||||
|
SELECT t.部门,
|
||||||
|
t.经办,
|
||||||
|
t."车险保费(万)" as 车险保费,
|
||||||
|
t.车险保费占比,
|
||||||
|
t."非车保费(万)" as 非车保费,
|
||||||
|
t.当月保费渗透率,
|
||||||
|
t.保费渗透率环比上月,
|
||||||
|
t.当月客户渗透率,
|
||||||
|
t.客户渗透率环比上月,
|
||||||
|
t.当月车非客均保费,
|
||||||
|
t.客均保费环比上月
|
||||||
|
FROM BI电销坐席车非渗透率跟踪表 t
|
||||||
|
ORDER BY t.部门
|
||||||
|
</select>
|
||||||
|
<!-- 坐席车非渗透率报表记录 -->
|
||||||
|
<resultMap id="BITelsalerAttachingRate" type="com.cpic.xim.mybatis.pojo.BITelsalerAttachingRateRecord">
|
||||||
|
<result property="departmentName" column="部门" javaType="String" jdbcType="VARCHAR" />
|
||||||
|
<result property="telsalerName" column="经办" javaType="String" jdbcType="VARCHAR" />
|
||||||
|
<result property="motoPremium" column="车险保费" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="motoPremiumProportion" column="车险保费占比" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="nomotoPremium" column="非车保费" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="attachingRate" column="当月保费渗透率" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="attachingRateChange" column="保费渗透率环比上月" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="customerHandleRate" column="当月客户渗透率" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="customerHandleRateChange" column="客户渗透率环比上月" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="noMotoPremiumPerCustomer" column="当月车非客均保费" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="noMotoPremiumPerCustomerChange" column="客均保费环比上月" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
</resultMap>
|
||||||
|
|
||||||
|
<select id="queryBITesalerRenewalRate" resultMap="BITelsalerRenewalRate">
|
||||||
|
select t.责任部门,
|
||||||
|
t.责任人,
|
||||||
|
t."机构目标值1(%)" as 机构目标值,
|
||||||
|
t."到期数-全月" as 到期数全月,
|
||||||
|
t."序时到期数占比(%)" as 序时到期数占比,
|
||||||
|
t."个车续保率(序时)(%)" as 个车续保率序时,
|
||||||
|
t."个车续保率(全月)(%)" as 个车续保率全月,
|
||||||
|
t."环比昨日(%)" as 环比昨日,
|
||||||
|
t."环比上月(%)" as 环比上月,
|
||||||
|
t.平均提前签单天数,
|
||||||
|
t.环比
|
||||||
|
from BI电销坐席续保率跟踪表 t
|
||||||
|
</select>
|
||||||
|
<resultMap id="BITelsalerRenewalRate" type="com.cpic.xim.mybatis.pojo.BITelsalerRenewalRateRecord">
|
||||||
|
<result property="责任部门" column="责任部门" javaType="String" jdbcType="VARCHAR" />
|
||||||
|
<result property="责任人" column="责任人" javaType="String" jdbcType="VARCHAR" />
|
||||||
|
<result property="机构目标值" column="机构目标值" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="到期数全月" column="到期数全月" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="序时到期数占比" column="序时到期数占比" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="个车续保率序时" column="个车续保率序时" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="个车续保率全月" column="个车续保率全月" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="环比昨日" column="环比昨日" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="环比上月" column="环比上月" javaType="double" jdbcType="DOUBLE" />
|
||||||
|
<result property="平均提前签单天数" column="平均提前签单天数" javaType="int" jdbcType="DOUBLE" />
|
||||||
|
<result property="环比" column="环比" javaType="int" jdbcType="DOUBLE" />
|
||||||
|
</resultMap>
|
||||||
|
</mapper>
|
@@ -27,5 +27,6 @@
|
|||||||
<mapper resource="mybatis/mapper/RankingListMapper.xml" />
|
<mapper resource="mybatis/mapper/RankingListMapper.xml" />
|
||||||
<mapper resource="mybatis/mapper/RewardsMapper.xml" />
|
<mapper resource="mybatis/mapper/RewardsMapper.xml" />
|
||||||
<mapper resource="mybatis/mapper/ImportBIArchievementDataMapper.xml" />
|
<mapper resource="mybatis/mapper/ImportBIArchievementDataMapper.xml" />
|
||||||
|
<mapper resource="mybatis/mapper/QueryBIArchievementDataMapper.xml" />
|
||||||
</mappers>
|
</mappers>
|
||||||
</configuration>
|
</configuration>
|
Reference in New Issue
Block a user