续保率报表格式修改,还未完成。

This commit is contained in:
Kane Wang 2024-01-10 18:24:10 +08:00
parent 962c22400e
commit afccb2a88c
14 changed files with 223 additions and 162 deletions

View File

@ -112,7 +112,7 @@ CREATE OR REPLACE PACKAGE BODY TELSALE_ARCHIEVEMENT_DEV_PKG IS
2) 2)
INTO A_RENEWAL_RATE, INTO A_RENEWAL_RATE,
A_RENEWAL_RATE_TARGET A_RENEWAL_RATE_TARGET
FROM BI机构当月个车续保率跟踪表 T FROM "BI机构续保率跟踪表-24年" T
WHERE T.责任部门 = L_DEPARTMENT_NAME; WHERE T.责任部门 = L_DEPARTMENT_NAME;
--解决round导致小数缺0的问题 --解决round导致小数缺0的问题
@ -229,7 +229,7 @@ CREATE OR REPLACE PACKAGE BODY TELSALE_ARCHIEVEMENT_DEV_PKG IS
2) 2)
INTO L_ROWNUM, INTO L_ROWNUM,
A_RENEWAL_RATE A_RENEWAL_RATE
FROM BI电销坐席续保率跟踪表 T FROM "BI电销坐席续保率跟踪表-24年" T
WHERE T.责任人 = L_CALLER_NAME WHERE T.责任人 = L_CALLER_NAME
AND ROWNUM = 1; AND ROWNUM = 1;
EXCEPTION EXCEPTION

View File

@ -86,7 +86,7 @@ CREATE OR REPLACE PACKAGE BODY TELSALE_ARCHIEVEMENT_PKG IS
2) 2)
INTO A_ATTACHING_RATE, INTO A_ATTACHING_RATE,
A_ATTACHING_RATE_TARGET A_ATTACHING_RATE_TARGET
FROM DESKTOP_ARCHIEVEMENT_ADMIN.BI机构渗透率跟踪表 DEPT FROM BI机构渗透率跟踪表 DEPT
WHERE DEPT.部门 = L_DEPARTMENT_NAME; WHERE DEPT.部门 = L_DEPARTMENT_NAME;
--解决round导致小数缺0的问题 --解决round导致小数缺0的问题
@ -112,7 +112,7 @@ CREATE OR REPLACE PACKAGE BODY TELSALE_ARCHIEVEMENT_PKG IS
2) 2)
INTO A_RENEWAL_RATE, INTO A_RENEWAL_RATE,
A_RENEWAL_RATE_TARGET A_RENEWAL_RATE_TARGET
FROM BI机构当月个车续保率跟踪表 T FROM "BI机构续保率跟踪表-24年" T
WHERE T.责任部门 = L_DEPARTMENT_NAME; WHERE T.责任部门 = L_DEPARTMENT_NAME;
--解决round导致小数缺0的问题 --解决round导致小数缺0的问题
@ -229,7 +229,7 @@ CREATE OR REPLACE PACKAGE BODY TELSALE_ARCHIEVEMENT_PKG IS
2) 2)
INTO L_ROWNUM, INTO L_ROWNUM,
A_RENEWAL_RATE A_RENEWAL_RATE
FROM BI电销坐席续保率跟踪表 T FROM "BI电销坐席续保率跟踪表-24年" T
WHERE T.责任人 = L_CALLER_NAME WHERE T.责任人 = L_CALLER_NAME
AND ROWNUM = 1; AND ROWNUM = 1;
EXCEPTION EXCEPTION

View File

@ -1,4 +1,4 @@
CREATE OR REPLACE PACKAGE telsale_bi_utils IS CREATE OR REPLACE PACKAGE TELSALE_BI_UTILS IS
-- Author : WANGWEI-202 -- Author : WANGWEI-202
-- Created : 2023/10/12 15:31:13 -- Created : 2023/10/12 15:31:13
@ -12,9 +12,9 @@ CREATE OR REPLACE PACKAGE telsale_bi_utils IS
PROCEDURE 清理BI部门续保率跟踪表; PROCEDURE 清理BI部门续保率跟踪表;
END telsale_bi_utils; END TELSALE_BI_UTILS;
/ /
CREATE OR REPLACE PACKAGE BODY telsale_bi_utils IS CREATE OR REPLACE PACKAGE BODY TELSALE_BI_UTILS IS
PROCEDURE 清理BI电销坐席车非渗透率跟踪表 IS PROCEDURE 清理BI电销坐席车非渗透率跟踪表 IS
BEGIN BEGIN
@ -24,6 +24,7 @@ CREATE OR REPLACE PACKAGE BODY telsale_bi_utils IS
PROCEDURE 清理BI电销坐席续保率跟踪表 IS PROCEDURE 清理BI电销坐席续保率跟踪表 IS
BEGIN BEGIN
EXECUTE IMMEDIATE 'truncate table BI电销坐席续保率跟踪表'; EXECUTE IMMEDIATE 'truncate table BI电销坐席续保率跟踪表';
--EXECUTE IMMEDIATE 'truncate table BI电销坐席续保率跟踪表-24年';
END; END;
PROCEDURE 清理BI部门渗透率跟踪表 IS PROCEDURE 清理BI部门渗透率跟踪表 IS
@ -34,10 +35,11 @@ CREATE OR REPLACE PACKAGE BODY telsale_bi_utils IS
PROCEDURE 清理BI部门续保率跟踪表 IS PROCEDURE 清理BI部门续保率跟踪表 IS
BEGIN BEGIN
EXECUTE IMMEDIATE 'truncate table BI机构当月个车续保率跟踪表'; EXECUTE IMMEDIATE 'truncate table BI机构当月个车续保率跟踪表';
--EXECUTE IMMEDIATE 'truncate table BI机构续保率跟踪表-24年';
END; END;
BEGIN BEGIN
-- Initialization -- Initialization
NULL; NULL;
END telsale_bi_utils; END TELSALE_BI_UTILS;
/ /

View File

@ -0,0 +1,45 @@
CREATE OR REPLACE PACKAGE TELSALE_BI_UTILS_DEV IS
-- Author : WANGWEI-202
-- Created : 2023/10/12 15:31:13
-- Purpose : bi数据报表相关的工具
PROCEDURE 清理BI电销坐席车非渗透率跟踪表;
PROCEDURE 清理BI电销坐席续保率跟踪表;
PROCEDURE 清理BI部门渗透率跟踪表;
PROCEDURE 清理BI部门续保率跟踪表;
END TELSALE_BI_UTILS_DEV;
/
CREATE OR REPLACE PACKAGE BODY TELSALE_BI_UTILS_DEV IS
PROCEDURE 清理BI电销坐席车非渗透率跟踪表 IS
BEGIN
EXECUTE IMMEDIATE 'truncate table BI电销坐席车非渗透率跟踪表';
END;
PROCEDURE 清理BI电销坐席续保率跟踪表 IS
BEGIN
--EXECUTE IMMEDIATE 'truncate table BI电销坐席续保率跟踪表';
EXECUTE IMMEDIATE 'truncate table "BI电销坐席续保率跟踪表-24年"';
END;
PROCEDURE 清理BI部门渗透率跟踪表 IS
BEGIN
EXECUTE IMMEDIATE 'truncate table BI机构渗透率跟踪表';
END;
PROCEDURE 清理BI部门续保率跟踪表 IS
BEGIN
--EXECUTE IMMEDIATE 'truncate table BI机构当月个车续保率跟踪表';
EXECUTE IMMEDIATE 'truncate table "BI机构续保率跟踪表-24年"';
END;
BEGIN
-- Initialization
NULL;
END TELSALE_BI_UTILS_DEV;
/

View File

@ -1,30 +1,30 @@
SELECT * SELECT *
FROM reward_gainers FROM REWARD_GAINERS
FOR UPDATE; FOR UPDATE;
SELECT b.reward_name, SELECT B.REWARD_NAME,
a.* A.*
FROM reward_gainers a, FROM REWARD_GAINERS A,
reward_projects b REWARD_PROJECTS B
WHERE a.reward_index = b.reward_index; WHERE A.REWARD_INDEX = B.REWARD_INDEX;
-- --
SELECT DISTINCT s.saler_code, SELECT DISTINCT S.SALER_CODE,
s.saler_name, S.SALER_NAME,
t.team_code, T.TEAM_CODE,
t.team, T.TEAM,
bm.department_code, BM.DEPARTMENT_CODE,
bm.department_name BM.DEPARTMENT_NAME
FROM tele_saler s, FROM TELE_SALER S,
tele_saler_team t, TELE_SALER_TEAM T,
idst0.bm_t bm IDST0.BM_T BM
WHERE s.team_code = t.team_code WHERE S.TEAM_CODE = T.TEAM_CODE
AND t.department_code = bm.department_code AND T.DEPARTMENT_CODE = BM.DEPARTMENT_CODE
AND s.saler_code = '61136'; AND S.SALER_CODE = '61136';
SELECT * SELECT *
FROM tele_saler_team t FROM TELE_SALER_TEAM T
WHERE t.team_code = '107077' WHERE T.TEAM_CODE = '107077'
SELECT * SELECT *
FROM FROM
@ -35,7 +35,7 @@ SELECT *
SELECT , SELECT ,
SUM() , SUM() ,
SUM() , SUM() ,
round((SUM() / SUM()) * 100, ROUND((SUM() / SUM()) * 100,
0) || '%' 0) || '%'
FROM FROM
GROUP BY ; GROUP BY ;
@ -46,7 +46,7 @@ SELECT
, ,
SUM(), SUM(),
SUM(), SUM(),
round(SUM() / SUM() * 100, ROUND(SUM() / SUM() * 100,
2) 2)
FROM FROM
GROUP BY , GROUP BY ,
@ -57,7 +57,7 @@ HAVING
DESC; DESC;
SELECT , SELECT ,
round(SUM() / SUM() * 100, ROUND(SUM() / SUM() * 100,
2) 2)
FROM FROM
WHERE = 'QDI' WHERE = 'QDI'
@ -68,37 +68,37 @@ SELECT
-- --
SELECT , SELECT ,
round(nvl(SUM() / SUM() * 100, ROUND(NVL(SUM() / SUM() * 100,
0), 0),
2) 2)
FROM xb FROM XB
WHERE xb. = '续保业务部' WHERE XB. = '续保业务部'
GROUP BY GROUP BY
ORDER BY DESC; ORDER BY DESC;
------------------------------------- -------------------------------------
SELECT zx.saler_name, SELECT ZX.SALER_NAME,
bm.department_name BM.DEPARTMENT_NAME
FROM tele_saler zx, FROM TELE_SALER ZX,
tele_saler_team team, TELE_SALER_TEAM TEAM,
idst0.bm_t bm IDST0.BM_T BM
WHERE zx.saler_name = '张楚沂' WHERE ZX.SALER_NAME = '张楚沂'
AND zx.team_code = team.team_code AND ZX.TEAM_CODE = TEAM.TEAM_CODE
AND team.department_code = bm.department_code; AND TEAM.DEPARTMENT_CODE = BM.DEPARTMENT_CODE;
---------------------------------------- ----------------------------------------
/* /*
truncate table BI机构渗透率跟踪表; truncate table BI机构渗透率跟踪表;
*/ */
SELECT * SELECT *
FROM BI电销坐席车非渗透率跟踪表 t FROM BI电销坐席车非渗透率跟踪表 T
WHERE t. = '杨苗'; WHERE T. = '杨苗';
SELECT * SELECT *
FROM BI电销坐席续保率跟踪表 FROM "BI电销坐席续保率跟踪表-24年"
WHERE = '杨苗'; WHERE = '杨苗';
SELECT * SELECT *
FROM BI机构渗透率跟踪表; FROM BI机构渗透率跟踪表;
SELECT * SELECT *
FROM BI机构当月个车续保率跟踪表; FROM "BI机构续保率跟踪表-24年";

View File

@ -14,7 +14,7 @@
"mitt": "^3.0.1", "mitt": "^3.0.1",
"moment": "^2.30.1", "moment": "^2.30.1",
"sass-loader": "^13.3.3", "sass-loader": "^13.3.3",
"vue": "^3.4.6", "vue": "^3.4.7",
"vue-router": "^4.2.5", "vue-router": "^4.2.5",
"vuex": "^4.1.0" "vuex": "^4.1.0"
}, },
@ -22,7 +22,7 @@
"@babel/eslint-parser": "^7.23.3", "@babel/eslint-parser": "^7.23.3",
"@rushstack/eslint-patch": "^1.6.1", "@rushstack/eslint-patch": "^1.6.1",
"@typescript-eslint/eslint-plugin": "^6.18.1", "@typescript-eslint/eslint-plugin": "^6.18.1",
"@vitejs/plugin-vue": "^5.0.2", "@vitejs/plugin-vue": "^5.0.3",
"@vue/cli-plugin-eslint": "^5.0.8", "@vue/cli-plugin-eslint": "^5.0.8",
"@vue/eslint-config-typescript": "^12.0.0", "@vue/eslint-config-typescript": "^12.0.0",
"axios": "^1.6.5", "axios": "^1.6.5",
@ -32,7 +32,7 @@
"eslint-plugin-vue": "^9.19.2", "eslint-plugin-vue": "^9.19.2",
"node-sass": "^9.0.0", "node-sass": "^9.0.0",
"sass": "^1.69.7", "sass": "^1.69.7",
"style-loader": "^3.3.3", "style-loader": "^3.3.4",
"ts-node": "^10.9.2", "ts-node": "^10.9.2",
"vue-eslint-parser": "^9.4.0" "vue-eslint-parser": "^9.4.0"
} }
@ -2284,9 +2284,9 @@
} }
}, },
"node_modules/@vitejs/plugin-vue": { "node_modules/@vitejs/plugin-vue": {
"version": "5.0.2", "version": "5.0.3",
"resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-5.0.2.tgz", "resolved": "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-5.0.3.tgz",
"integrity": "sha512-kEjJHrLb5ePBvjD0SPZwJlw1QTRcjjCA9sB5VyfonoXVBxTS7TMnqL6EkLt1Eu61RDeiuZ/WN9Hf6PxXhPI2uA==", "integrity": "sha512-b8S5dVS40rgHdDrw+DQi/xOM9ed+kSRZzfm1T74bMmBDCd8XO87NKlFYInzCtwvtWwXZvo1QxE2OSspTATWrbA==",
"dev": true, "dev": true,
"engines": { "engines": {
"node": "^18.0.0 || >=20.0.0" "node": "^18.0.0 || >=20.0.0"
@ -2561,12 +2561,12 @@
"dev": true "dev": true
}, },
"node_modules/@vue/compiler-core": { "node_modules/@vue/compiler-core": {
"version": "3.4.6", "version": "3.4.7",
"resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.4.6.tgz", "resolved": "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.4.7.tgz",
"integrity": "sha512-9SmkpHsXqhHGMIOp4cawUqp0AxLN2fJJfxh3sR2RaouVx/Y/ww5ts3dfpD9SCvD0n8cdO/Xw+kWEpa6EkH/vTQ==", "integrity": "sha512-hhCaE3pTMrlIJK7M/o3Xf7HV8+JoNTGOQ/coWS+V+pH6QFFyqtoXqQzpqsNp7UK17xYKua/MBiKj4e1vgZOBYw==",
"dependencies": { "dependencies": {
"@babel/parser": "^7.23.6", "@babel/parser": "^7.23.6",
"@vue/shared": "3.4.6", "@vue/shared": "3.4.7",
"entities": "^4.5.0", "entities": "^4.5.0",
"estree-walker": "^2.0.2", "estree-walker": "^2.0.2",
"source-map-js": "^1.0.2" "source-map-js": "^1.0.2"
@ -2581,24 +2581,24 @@
} }
}, },
"node_modules/@vue/compiler-dom": { "node_modules/@vue/compiler-dom": {
"version": "3.4.6", "version": "3.4.7",
"resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.4.6.tgz", "resolved": "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.4.7.tgz",
"integrity": "sha512-i39ZuyHPzPb0v5yXZbvODGwLr+T7lS1rYSjMd1oCTa14aDP80kYpWXrWPF1JVD4QJJNyLgFnJ2hxvFLM7dy9NQ==", "integrity": "sha512-qDKBAIurCTub4n/6jDYkXwgsFuriqqmmLrIq1N2QDfYJA/mwiwvxi09OGn28g+uDdERX9NaKDLji0oTjE3sScg==",
"dependencies": { "dependencies": {
"@vue/compiler-core": "3.4.6", "@vue/compiler-core": "3.4.7",
"@vue/shared": "3.4.6" "@vue/shared": "3.4.7"
} }
}, },
"node_modules/@vue/compiler-sfc": { "node_modules/@vue/compiler-sfc": {
"version": "3.4.6", "version": "3.4.7",
"resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.4.6.tgz", "resolved": "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.4.7.tgz",
"integrity": "sha512-kTFOiyMtuetFqi5yEPA4hR6FTD36zKKY3qaBonxGb4pgj0yK1eACqH+iycTAsEqr2u4cOhcGkx3Yjecpgh6FTQ==", "integrity": "sha512-Gec6CLkReVswDYjQFq79O5rktri4R7TsD/VPCiUoJw40JhNNxaNJJa8mrQrWoJluW4ETy6QN0NUyC/JO77OCOw==",
"dependencies": { "dependencies": {
"@babel/parser": "^7.23.6", "@babel/parser": "^7.23.6",
"@vue/compiler-core": "3.4.6", "@vue/compiler-core": "3.4.7",
"@vue/compiler-dom": "3.4.6", "@vue/compiler-dom": "3.4.7",
"@vue/compiler-ssr": "3.4.6", "@vue/compiler-ssr": "3.4.7",
"@vue/shared": "3.4.6", "@vue/shared": "3.4.7",
"estree-walker": "^2.0.2", "estree-walker": "^2.0.2",
"magic-string": "^0.30.5", "magic-string": "^0.30.5",
"postcss": "^8.4.32", "postcss": "^8.4.32",
@ -2606,12 +2606,12 @@
} }
}, },
"node_modules/@vue/compiler-ssr": { "node_modules/@vue/compiler-ssr": {
"version": "3.4.6", "version": "3.4.7",
"resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.4.6.tgz", "resolved": "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.4.7.tgz",
"integrity": "sha512-XqeojjDitjMLyOogDePNSxw9XL4FAXchO9oOfqdzLVEtYES5j+AEilPJyP0KhQPfGecY2mJ3Y7/e6kkiJQLKvg==", "integrity": "sha512-PvYeSOvnCkST5mGS0TLwEn5w+4GavtEn6adcq8AspbHaIr+mId5hp7cG3ASy3iy8b+LuXEG2/QaV/nj5BQ/Aww==",
"dependencies": { "dependencies": {
"@vue/compiler-dom": "3.4.6", "@vue/compiler-dom": "3.4.7",
"@vue/shared": "3.4.6" "@vue/shared": "3.4.7"
} }
}, },
"node_modules/@vue/component-compiler-utils": { "node_modules/@vue/component-compiler-utils": {
@ -2710,48 +2710,48 @@
} }
}, },
"node_modules/@vue/reactivity": { "node_modules/@vue/reactivity": {
"version": "3.4.6", "version": "3.4.7",
"resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.4.6.tgz", "resolved": "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.4.7.tgz",
"integrity": "sha512-/VuOxdWDyAeKFHjOuSKEtH9jEVPRgsXxu84utBP1SiXFcFRx2prwiC9cSR8hKOfj5nBwhLXYb6XEU69mLpuk0w==", "integrity": "sha512-F539DO0ogH0+L8F9Pnw7cjqibcmSOh5UTk16u5f4MKQ8fraqepI9zdh+sozPX6VmEHOcjo8qw3Or9ZcFFw4SZA==",
"dependencies": { "dependencies": {
"@vue/shared": "3.4.6" "@vue/shared": "3.4.7"
} }
}, },
"node_modules/@vue/runtime-core": { "node_modules/@vue/runtime-core": {
"version": "3.4.6", "version": "3.4.7",
"resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.4.6.tgz", "resolved": "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.4.7.tgz",
"integrity": "sha512-XDOx8iiNmP66p+goUHT5XL1AnV8406VVFQARbylqmSCBZEtxchfu2ZoQk7U07ze8G/E0/BtX/C5o29zB1W4o5A==", "integrity": "sha512-QMMsWRQaD3BpGyjjChthpl4Mji4Fjx1qfdufsXlDkKU3HV+hWNor2z+29F+E1MmVcP0ZfRZUfqYgtsQoL7IGwQ==",
"dependencies": { "dependencies": {
"@vue/reactivity": "3.4.6", "@vue/reactivity": "3.4.7",
"@vue/shared": "3.4.6" "@vue/shared": "3.4.7"
} }
}, },
"node_modules/@vue/runtime-dom": { "node_modules/@vue/runtime-dom": {
"version": "3.4.6", "version": "3.4.7",
"resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.4.6.tgz", "resolved": "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.4.7.tgz",
"integrity": "sha512-8bdQR5CLfzClGvAOfbbCF8adE9oko0pRfe+dj297i0JCdCJ8AuyUMsXkt6vGPcRPqIKX4Z8f/bDPrwl+c7e4Wg==", "integrity": "sha512-XwegyUY1rw8zxsX1Z36vwYcqo+uOgih5ti7y9vx+pPFhNdSQmN4LqK2RmSeAJG1oKV8NqSUmjpv92f/x6h0SeQ==",
"dependencies": { "dependencies": {
"@vue/runtime-core": "3.4.6", "@vue/runtime-core": "3.4.7",
"@vue/shared": "3.4.6", "@vue/shared": "3.4.7",
"csstype": "^3.1.3" "csstype": "^3.1.3"
} }
}, },
"node_modules/@vue/server-renderer": { "node_modules/@vue/server-renderer": {
"version": "3.4.6", "version": "3.4.7",
"resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.4.6.tgz", "resolved": "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.4.7.tgz",
"integrity": "sha512-0LS+GXf3M93KloaK/S0ZPq5PnKERgPAV5iNCCpjyBLhAQGGEeqfJojs3yXOAMQLSvXi9FLYDHzDEOLWoLaYbTQ==", "integrity": "sha512-3bWnYLEkLLhkDWqvNk7IvbQD4UcxvFKxELBiOO2iG3m6AniFIsBWfHOO5tLVQnjdWkODu4rq0GipmfEenVAK5Q==",
"dependencies": { "dependencies": {
"@vue/compiler-ssr": "3.4.6", "@vue/compiler-ssr": "3.4.7",
"@vue/shared": "3.4.6" "@vue/shared": "3.4.7"
}, },
"peerDependencies": { "peerDependencies": {
"vue": "3.4.6" "vue": "3.4.7"
} }
}, },
"node_modules/@vue/shared": { "node_modules/@vue/shared": {
"version": "3.4.6", "version": "3.4.7",
"resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.6.tgz", "resolved": "https://registry.npmmirror.com/@vue/shared/-/shared-3.4.7.tgz",
"integrity": "sha512-O16vewA05D0IwfG2N/OFEuVeb17pieaI32mmYXp36V8lp+/pI1YV04rRL9Eyjndj3xQO5SNjAxTh6ul4IlBa3A==" "integrity": "sha512-G+i4glX1dMJk88sbJEcQEGWRQnVm9eIY7CcQbO5dpdsD9SF8jka3Mr5OqZYGjczGN1+D6EUwdu6phcmcx9iuPA=="
}, },
"node_modules/@vue/vue-loader-v15": { "node_modules/@vue/vue-loader-v15": {
"name": "vue-loader", "name": "vue-loader",
@ -13889,9 +13889,9 @@
} }
}, },
"node_modules/style-loader": { "node_modules/style-loader": {
"version": "3.3.3", "version": "3.3.4",
"resolved": "https://registry.npmmirror.com/style-loader/-/style-loader-3.3.3.tgz", "resolved": "https://registry.npmmirror.com/style-loader/-/style-loader-3.3.4.tgz",
"integrity": "sha512-53BiGLXAcll9maCYtZi2RCQZKa8NQQai5C4horqKyRmHj9H7QmcUyucrH+4KW/gBQbXM2AsB0axoEcFZPlfPcw==", "integrity": "sha512-0WqXzrsMTyb8yjZJHDqwmnwRJvhALK9LfRtRc6B4UTWe8AijYLZYZ9thuJTZc2VfQWINADW/j+LiJnfy2RoC1w==",
"dev": true, "dev": true,
"engines": { "engines": {
"node": ">= 12.13.0" "node": ">= 12.13.0"
@ -14665,15 +14665,15 @@
} }
}, },
"node_modules/vue": { "node_modules/vue": {
"version": "3.4.6", "version": "3.4.7",
"resolved": "https://registry.npmmirror.com/vue/-/vue-3.4.6.tgz", "resolved": "https://registry.npmmirror.com/vue/-/vue-3.4.7.tgz",
"integrity": "sha512-gAzw5oP0/h34/yq1LjLNpn4wrCKYMuWp2jbs/JirFiZAFWYhd9jTkXp4wIi5ApgMJrMgD6YFyyXwKsqFYR31IQ==", "integrity": "sha512-4urmkWpudekq0CPNMO7p6mBGa9qmTXwJMO2r6CT4EzIJVG7WoSReiysiNb7OSi/WI113oX0Srn9Rz1k/DCXKFQ==",
"dependencies": { "dependencies": {
"@vue/compiler-dom": "3.4.6", "@vue/compiler-dom": "3.4.7",
"@vue/compiler-sfc": "3.4.6", "@vue/compiler-sfc": "3.4.7",
"@vue/runtime-dom": "3.4.6", "@vue/runtime-dom": "3.4.7",
"@vue/server-renderer": "3.4.6", "@vue/server-renderer": "3.4.7",
"@vue/shared": "3.4.6" "@vue/shared": "3.4.7"
}, },
"peerDependencies": { "peerDependencies": {
"typescript": "*" "typescript": "*"

View File

@ -15,7 +15,7 @@
"mitt": "^3.0.1", "mitt": "^3.0.1",
"moment": "^2.30.1", "moment": "^2.30.1",
"sass-loader": "^13.3.3", "sass-loader": "^13.3.3",
"vue": "^3.4.6", "vue": "^3.4.7",
"vue-router": "^4.2.5", "vue-router": "^4.2.5",
"vuex": "^4.1.0" "vuex": "^4.1.0"
}, },
@ -23,7 +23,7 @@
"@babel/eslint-parser": "^7.23.3", "@babel/eslint-parser": "^7.23.3",
"@rushstack/eslint-patch": "^1.6.1", "@rushstack/eslint-patch": "^1.6.1",
"@typescript-eslint/eslint-plugin": "^6.18.1", "@typescript-eslint/eslint-plugin": "^6.18.1",
"@vitejs/plugin-vue": "^5.0.2", "@vitejs/plugin-vue": "^5.0.3",
"@vue/cli-plugin-eslint": "^5.0.8", "@vue/cli-plugin-eslint": "^5.0.8",
"@vue/eslint-config-typescript": "^12.0.0", "@vue/eslint-config-typescript": "^12.0.0",
"axios": "^1.6.5", "axios": "^1.6.5",
@ -33,7 +33,7 @@
"eslint-plugin-vue": "^9.19.2", "eslint-plugin-vue": "^9.19.2",
"node-sass": "^9.0.0", "node-sass": "^9.0.0",
"sass": "^1.69.7", "sass": "^1.69.7",
"style-loader": "^3.3.3", "style-loader": "^3.3.4",
"ts-node": "^10.9.2", "ts-node": "^10.9.2",
"vue-eslint-parser": "^9.4.0" "vue-eslint-parser": "^9.4.0"
} }

View File

@ -19,14 +19,14 @@ public class BIDepartmentRenewalRateRecord
private double 个车续保率全月; private double 个车续保率全月;
private double 环比昨日; private double 环比昨日;
private double 环比上月; private double 环比上月;
private int 平均提前签单天数; // private int 平均提前签单天数;
private double 环比; // private double 环比;
public BIDepartmentRenewalRateRecord() public BIDepartmentRenewalRateRecord()
{} {}
public BIDepartmentRenewalRateRecord( String 责任部门, double 机构目标值, int 到期数全月, double 序时到期数占比, public BIDepartmentRenewalRateRecord( String 责任部门, double 机构目标值, int 到期数全月, double 序时到期数占比,
double 个车续保率序时, double 个车续保率全月, double 环比昨日, double 环比上月, int 平均提前签单天数, double 环比 ) double 个车续保率序时, double 个车续保率全月, double 环比昨日, double 环比上月 )
{ {
this.责任部门 = 责任部门; this.责任部门 = 责任部门;
this.机构目标值 = 机构目标值; this.机构目标值 = 机构目标值;
@ -36,8 +36,8 @@ public class BIDepartmentRenewalRateRecord
this.个车续保率全月 = 个车续保率全月; this.个车续保率全月 = 个车续保率全月;
this.环比昨日 = 环比昨日; this.环比昨日 = 环比昨日;
this.环比上月 = 环比上月; this.环比上月 = 环比上月;
this.平均提前签单天数 = 平均提前签单天数; // this.平均提前签单天数 = 平均提前签单天数;
this.环比 = 环比; // this.环比 = 环比;
} }
public String get责任部门() public String get责任部门()
@ -120,25 +120,6 @@ public class BIDepartmentRenewalRateRecord
this.环比上月 = 环比上月; this.环比上月 = 环比上月;
} }
public int get平均提前签单天数()
{
return 平均提前签单天数;
}
public void set平均提前签单天数( int 平均提前签单天数 )
{
this.平均提前签单天数 = 平均提前签单天数;
}
public double get环比()
{
return 环比;
}
public void set环比( double 环比 )
{
this.环比 = 环比;
}
@Override @Override
public int hashCode() public int hashCode()
@ -160,9 +141,6 @@ public class BIDepartmentRenewalRateRecord
result = prime * result + (int) (temp ^ (temp >>> 32)); result = prime * result + (int) (temp ^ (temp >>> 32));
temp = Double.doubleToLongBits( 环比上月 ); temp = Double.doubleToLongBits( 环比上月 );
result = prime * result + (int) (temp ^ (temp >>> 32)); result = prime * result + (int) (temp ^ (temp >>> 32));
result = prime * result + 平均提前签单天数;
temp = Double.doubleToLongBits( 环比 );
result = prime * result + (int) (temp ^ (temp >>> 32));
return result; return result;
} }
@ -197,10 +175,6 @@ public class BIDepartmentRenewalRateRecord
return false; return false;
if ( Double.doubleToLongBits( 环比上月 ) != Double.doubleToLongBits( other.环比上月 ) ) if ( Double.doubleToLongBits( 环比上月 ) != Double.doubleToLongBits( other.环比上月 ) )
return false; return false;
if ( 平均提前签单天数 != other.平均提前签单天数 )
return false;
if ( Double.doubleToLongBits( 环比 ) != Double.doubleToLongBits( other.环比 ) )
return false;
return true; return true;
} }
@ -209,7 +183,6 @@ public class BIDepartmentRenewalRateRecord
{ {
return "BIDepartmentRenewalRateRecord [责任部门=" + 责任部门 + ", 机构目标值=" + 机构目标值 + ", 到期数全月=" return "BIDepartmentRenewalRateRecord [责任部门=" + 责任部门 + ", 机构目标值=" + 机构目标值 + ", 到期数全月="
+ 到期数全月 + ", 序时到期数占比=" + 序时到期数占比 + ", 个车续保率序时=" + 个车续保率序时 + ", 个车续保率全月=" + 个车续保率全月 + 到期数全月 + ", 序时到期数占比=" + 序时到期数占比 + ", 个车续保率序时=" + 个车续保率序时 + ", 个车续保率全月=" + 个车续保率全月
+ ", 环比昨日=" + 环比昨日 + ", 环比上月=" + 环比上月 + ", 平均提前签单天数=" + 平均提前签单天数 + ", 环比=" + 环比 + ", 环比昨日=" + 环比昨日 + ", 环比上月=" + 环比上月 + "]";
+ "]";
} }
} }

View File

@ -34,18 +34,21 @@ public final class ImportBIExcelData
{ {
private static Logger logger = LoggerFactory.getLogger( ImportBIExcelData.class ); private static Logger logger = LoggerFactory.getLogger( ImportBIExcelData.class );
// 坐席 渗透率
private static String[] TelsalerAttachingRateExcelTitle = new String[] private static String[] TelsalerAttachingRateExcelTitle = new String[]
{ "部门", "经办", "车险保费(万)", "车险保费占比", "非车保费(万)", "当月保费渗透率", "保费渗透率环比上月", "当月客户渗透率", "客户渗透率环比上月", { "部门", "经办", "车险保费(万)", "车险保费占比", "非车保费(万)", "当月保费渗透率", "保费渗透率环比上月", "当月客户渗透率", "客户渗透率环比上月",
"当月车非客均保费", "客均保费环比上月"}; "当月车非客均保费", "客均保费环比上月"};
// 坐席 续保率
private static String[] TelSalerRenewalRateExcelTitle = new String[] private static String[] TelSalerRenewalRateExcelTitle = new String[]
{ "责任部门", "责任人", "机构目标值1(%)", "到期数-全月", "序时到期数占比(%)", "个车续保率(序时)(%)", "个车续保率(全月)(%)", "环比昨日(%)", { "责任部门", "责任人", "机构目标值1(%)", "到期数-全月", "序时到期数占比(%)", "个车续保率(序时)(%)", "个车续保率(全月)(%)", "环比昨日(%)",
"环比上月(%)", "平均提前签单天数", "环比"}; "环比上月(%)", "序时-部门内", "全月-部门内"};
// 机构 渗透率
private static String[] DepartmentAttachingRateExcelTitle = new String[] private static String[] DepartmentAttachingRateExcelTitle = new String[]
{ "部门", "目标值-机构", "目标差距", "车险保费(万)", "车险保费占比", "非车保费(万)", "当月保费渗透率", "保费渗透率环比上月", "车险客户数", "当月客户渗透率", { "部门", "目标值-机构", "目标差距", "车险保费(万)", "车险保费占比", "非车保费(万)", "当月保费渗透率", "保费渗透率环比上月", "车险客户数", "当月客户渗透率",
"客户渗透率环比上月", "当月车非客均保费", "客均保费环比上月"}; "客户渗透率环比上月", "当月车非客均保费", "客均保费环比上月"};
// 机构 续保率
private static String[] DepartmentRenewalRateExcelTitle = new String[] private static String[] DepartmentRenewalRateExcelTitle = new String[]
{ "责任部门", "机构目标值1(%)", "到期数-全月", "序时到期数占比(%)", "个车续保率(序时)(%)", "个车续保率(全月)(%)", "环比昨日(%)", { "责任部门", "机构目标值1(%)", "到期数-全月", "序时到期数占比(%)", "个车续保率(序时)(%)", "个车续保率(全月)(%)", "环比昨日(%)",
"环比上月(%)", "序时-部门内", "全月-部门内",}; "环比上月(%)", "序时-部门内", "全月-部门内",};
@ -499,11 +502,11 @@ public final class ImportBIExcelData
double 个车续保率全月 = MyPOIUtils.getNumbericCellValue( row, 5 ) * 100; double 个车续保率全月 = MyPOIUtils.getNumbericCellValue( row, 5 ) * 100;
double 环比昨日 = MyPOIUtils.getNumbericCellValue( row, 6 ) * 100; double 环比昨日 = MyPOIUtils.getNumbericCellValue( row, 6 ) * 100;
double 环比上月 = MyPOIUtils.getNumbericCellValue( row, 7 ) * 100; double 环比上月 = MyPOIUtils.getNumbericCellValue( row, 7 ) * 100;
int 平均提前签单天数 = (int) MyPOIUtils.getNumbericCellValue( row, 8 ); // int 平均提前签单天数 = (int) MyPOIUtils.getNumbericCellValue( row, 8 );
double 环比 = MyPOIUtils.getNumbericCellValue( row, 9 ) * 100; // double 环比 = MyPOIUtils.getNumbericCellValue( row, 9 ) * 100;
BIDepartmentRenewalRateRecord record = new BIDepartmentRenewalRateRecord( 责任部门, BIDepartmentRenewalRateRecord record = new BIDepartmentRenewalRateRecord( 责任部门,
机构目标值, 到期数全月, 序时到期数占比, 个车续保率序时, 个车续保率全月, 环比昨日, 环比上月, 平均提前签单天数, 环比 ); 机构目标值, 到期数全月, 序时到期数占比, 个车续保率序时, 个车续保率全月, 环比昨日, 环比上月 );
records.add( record ); records.add( record );
} }

View File

@ -29,24 +29,23 @@
</insert> </insert>
<insert id="insertDepartmentRenewalRateDataToDB" parameterType="com.cpic.xim.mybatis.pojo.BIDepartmentRenewalRateRecord" > <insert id="insertDepartmentRenewalRateDataToDB" parameterType="com.cpic.xim.mybatis.pojo.BIDepartmentRenewalRateRecord" >
insert into BI机构当月个车续保率跟踪表( "责任部门","机构目标值1(%)","到期数-全月" ,"序时到期数占比(%)","个车续保率(序时)(%)", insert into "BI机构续保率跟踪表-24年"( "责任部门","机构目标值1(%)","到期数-全月" ,"序时到期数占比(%)","个车续保率(序时)(%)",
"个车续保率(全月)(%)","环比昨日(%)","环比上月(%)","平均提前签单天数","环比") "个车续保率(全月)(%)","环比昨日(%)","环比上月(%)")
values (#{责任部门},#{机构目标值},#{到期数全月},#{序时到期数占比}, values (#{责任部门},#{机构目标值},#{到期数全月},#{序时到期数占比},
#{个车续保率序时},#{个车续保率全月},#{环比昨日},#{环比上月}, #{个车续保率序时},#{个车续保率全月},#{环比昨日},#{环比上月} )
#{平均提前签单天数},#{环比})
</insert> </insert>
<select id="cleanTelsalerAttachingRateData" statementType="CALLABLE"> <select id="cleanTelsalerAttachingRateData" statementType="CALLABLE">
call telsale_bi_utils.清理BI电销坐席车非渗透率跟踪表() call TELSALE_BI_UTILS_dev.清理BI电销坐席车非渗透率跟踪表()
</select> </select>
<select id="cleanTelsalerRenewalRateData" statementType="CALLABLE"> <select id="cleanTelsalerRenewalRateData" statementType="CALLABLE">
call telsale_bi_utils.清理BI电销坐席续保率跟踪表() call TELSALE_BI_UTILS_dev.清理BI电销坐席续保率跟踪表()
</select> </select>
<select id="cleanDepartmentAttachingRateData" statementType="CALLABLE"> <select id="cleanDepartmentAttachingRateData" statementType="CALLABLE">
call telsale_bi_utils.清理BI部门渗透率跟踪表() call TELSALE_BI_UTILS_dev.清理BI部门渗透率跟踪表()
</select> </select>
<select id="cleanDepartmentRenewalRateData" statementType="CALLABLE"> <select id="cleanDepartmentRenewalRateData" statementType="CALLABLE">
call telsale_bi_utils.清理BI部门续保率跟踪表() call TELSALE_BI_UTILS_dev.清理BI部门续保率跟踪表()
</select> </select>
</mapper> </mapper>

View File

@ -105,7 +105,7 @@
t."环比上月(%)" as 环比上月, t."环比上月(%)" as 环比上月,
t.平均提前签单天数, t.平均提前签单天数,
t.环比 t.环比
from BI机构当月个车续保率跟踪表 t from "BI机构续保率跟踪表-24年" t
</select> </select>
<resultMap id="BIDepartmentRenewalRate" type="com.cpic.xim.mybatis.pojo.BIDepartmentRenewalRateRecord"> <resultMap id="BIDepartmentRenewalRate" type="com.cpic.xim.mybatis.pojo.BIDepartmentRenewalRateRecord">
<result column="责任部门" property="责任部门" jdbcType="VARCHAR" javaType="String" /> <result column="责任部门" property="责任部门" jdbcType="VARCHAR" javaType="String" />
@ -116,7 +116,7 @@
<result column="个车续保率全月" property="个车续保率全月" jdbcType="DOUBLE" javaType="double" /> <result column="个车续保率全月" property="个车续保率全月" jdbcType="DOUBLE" javaType="double" />
<result column="环比昨日" property="环比昨日" jdbcType="DOUBLE" javaType="double" /> <result column="环比昨日" property="环比昨日" jdbcType="DOUBLE" javaType="double" />
<result column="环比上月" property="环比上月" jdbcType="DOUBLE" javaType="double" /> <result column="环比上月" property="环比上月" jdbcType="DOUBLE" javaType="double" />
<result column="平均提前签单天数" property="平均提前签单天数" jdbcType="INTEGER" javaType="int" /> <!-- <result column="平均提前签单天数" property="平均提前签单天数" jdbcType="INTEGER" javaType="int" /> -->
<result column="环比" property="环比" jdbcType="DOUBLE" javaType="double" /> <!-- <result column="环比" property="环比" jdbcType="DOUBLE" javaType="double" /> -->
</resultMap> </resultMap>
</mapper> </mapper>

View File

@ -18,6 +18,7 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import com.cpic.xim.mybatis.mapper.ImportBIArchievementDataMapper; import com.cpic.xim.mybatis.mapper.ImportBIArchievementDataMapper;
import com.cpic.xim.mybatis.pojo.BIDepartmentAttachingRateRecord; import com.cpic.xim.mybatis.pojo.BIDepartmentAttachingRateRecord;
import com.cpic.xim.mybatis.pojo.BIDepartmentRenewalRateRecord;
import com.cpic.xim.mybatis.pojo.BITelsalerRenewalRateRecord; import com.cpic.xim.mybatis.pojo.BITelsalerRenewalRateRecord;
import com.cpic.xim.mybatis.utils.MybatisUtils; import com.cpic.xim.mybatis.utils.MybatisUtils;
import com.cpic.xim.utils.data.ImportBIExcelData; import com.cpic.xim.utils.data.ImportBIExcelData;
@ -74,7 +75,7 @@ public class BatchInsertTest
@Test @Test
public void testBatchInsertBITeslsalerRenewalRate() public void testBatchInsertBITeslsalerRenewalRate()
{ {
String filePath = "D:/develop/cpicxim/deskop_task_schedule/数据/测试用/坐席-续保.xlsx"; String filePath = "D:\\develop\\cpicxim\\deskop_task_schedule\\数据\\测试用\\24年报表\\坐席-续保.xlsx";
ArrayList<BITelsalerRenewalRateRecord> records = null; ArrayList<BITelsalerRenewalRateRecord> records = null;
SqlSession session = null; SqlSession session = null;
ImportBIArchievementDataMapper mapper = null; ImportBIArchievementDataMapper mapper = null;
@ -114,7 +115,7 @@ public class BatchInsertTest
@Test @Test
public void testBatchInsertBIDepartmentAttachingRateToDB() public void testBatchInsertBIDepartmentAttachingRateToDB()
{ {
String filePath = "D:/develop/cpicxim/deskop_task_schedule/数据/测试用/机构渗透.xlsx"; String filePath = "D:\\develop\\cpicxim\\deskop_task_schedule\\数据\\测试用\\24年报表\\机构-续保.xlsx";
ArrayList<BIDepartmentAttachingRateRecord> records = null; ArrayList<BIDepartmentAttachingRateRecord> records = null;
SqlSession session = null; SqlSession session = null;
@ -148,4 +149,42 @@ public class BatchInsertTest
assert( false ); assert( false );
} }
} }
@Test
public void testBatchInsertBIDepartmentRenewalRateToDB()
{
String filePath = "D:\\develop\\cpicxim\\deskop_task_schedule\\数据\\测试用\\24年报表\\机构-续保.xlsx";
ArrayList<BIDepartmentRenewalRateRecord> records = null;
SqlSession session = null;
ImportBIArchievementDataMapper mapper = null;
try
{
records =
ImportBIExcelData.importBIDepartmentRenewalRateRecordsFromXlsx( filePath, 0, 1 );
session = MybatisUtils.getSqlSessionBatch();
mapper = session.getMapper( ImportBIArchievementDataMapper.class );
mapper.cleanDepartmentRenewalRateData();
for ( BIDepartmentRenewalRateRecord record : records )
{
mapper.insertDepartmentRenewalRateDataToDB( record );
}
session.commit();
}
catch ( Exception error )
{
if ( session != null )
{
session.rollback();
}
logger.error("错误", error);
assert( false );
}
}
} }

Binary file not shown.

Binary file not shown.