19 Commits

Author SHA1 Message Date
c6ea898505 保存进度! 2025-09-03 15:32:36 +08:00
711697e6a1 升级ts代码。 2025-09-03 15:29:46 +08:00
89866c8513 更新一些设置。 2025-03-16 23:04:40 +08:00
f90114e204 保存进度! 2024-02-29 01:18:04 +08:00
0458da2fae 保存进度! 2024-02-29 01:16:27 +08:00
46d0ff64ef 升级依赖。 2024-02-28 18:24:06 +08:00
57b5edd9c0 整理依赖 2024-01-29 19:31:29 +08:00
73cfe24460 修复依赖问题! 2024-01-25 11:01:27 +08:00
9e0d07a9f7 升级依赖。 2024-01-21 19:03:17 +08:00
ab957962fc 升级依赖。 2024-01-21 19:01:40 +08:00
da9da6e906 升级依赖 2024-01-21 19:01:14 +08:00
7ba9d249ee 修改bug。 2024-01-11 18:46:08 +08:00
afccb2a88c 续保率报表格式修改,还未完成。 2024-01-10 18:24:10 +08:00
962c22400e 升级依赖。 2024-01-09 17:52:41 +08:00
c7bf9f6c0d 升级依赖。 2024-01-03 18:46:55 +08:00
daa1d2aaaf 升级依赖。 2023-12-29 19:28:29 +08:00
6a93fc2738 保存进度! 2023-12-29 19:24:25 +08:00
e3858d23d9 Merge branch 'feature-telsaler' of http://222.76.244.118:3000/CPICXIM/desktop_task_schedule into feature-telsaler 2023-12-26 18:00:22 +08:00
0cf8e16129 修改请求超时时间为30秒。 2023-12-26 18:00:14 +08:00
40 changed files with 1941 additions and 10371 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<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD>ٱ<EFBFBD> T FROM "BI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD>ٱ<EFBFBD>-24<32><34>" T
WHERE T.<2E><><EFBFBD>β<EFBFBD><CEB2><EFBFBD> = L_DEPARTMENT_NAME; WHERE T.<2E><><EFBFBD>β<EFBFBD><CEB2><EFBFBD> = L_DEPARTMENT_NAME;
--<2D><><EFBFBD><EFBFBD>round<6E><64><EFBFBD><EFBFBD>С<EFBFBD><D0A1>ȱ0<C8B1><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD> --<2D><><EFBFBD><EFBFBD>round<6E><64><EFBFBD><EFBFBD>С<EFBFBD><D0A1>ȱ0<C8B1><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -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<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD> T FROM "BI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD>ٱ<EFBFBD>-24<32><34>" T
WHERE T.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = L_CALLER_NAME WHERE T.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = 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<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD>ʸ<EFBFBD><EFBFBD>ٱ<EFBFBD> DEPT FROM BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD> DEPT
WHERE DEPT.<2E><><EFBFBD><EFBFBD> = L_DEPARTMENT_NAME; WHERE DEPT.<2E><><EFBFBD><EFBFBD> = L_DEPARTMENT_NAME;
--<2D><><EFBFBD><EFBFBD>round<6E><64><EFBFBD><EFBFBD>С<EFBFBD><D0A1>ȱ0<C8B1><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD> --<2D><><EFBFBD><EFBFBD>round<6E><64><EFBFBD><EFBFBD>С<EFBFBD><D0A1>ȱ0<C8B1><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -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<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD>ٱ<EFBFBD> T FROM "BI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD>ٱ<EFBFBD>-24<32><34>" T
WHERE T.<2E><><EFBFBD>β<EFBFBD><CEB2><EFBFBD> = L_DEPARTMENT_NAME; WHERE T.<2E><><EFBFBD>β<EFBFBD><CEB2><EFBFBD> = L_DEPARTMENT_NAME;
--<2D><><EFBFBD><EFBFBD>round<6E><64><EFBFBD><EFBFBD>С<EFBFBD><D0A1>ȱ0<C8B1><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD> --<2D><><EFBFBD><EFBFBD>round<6E><64><EFBFBD><EFBFBD>С<EFBFBD><D0A1>ȱ0<C8B1><30><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -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<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD> T FROM "BI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD>ٱ<EFBFBD>-24<32><34>" T
WHERE T.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = L_CALLER_NAME WHERE T.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = L_CALLER_NAME
AND ROWNUM = 1; AND ROWNUM = 1;
EXCEPTION EXCEPTION
@@ -299,7 +299,7 @@ CREATE OR REPLACE PACKAGE BODY TELSALE_ARCHIEVEMENT_PKG IS
FROM (SELECT T.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, FROM (SELECT T.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
ROUND(t."<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD>ȫ<EFBFBD>£<EFBFBD>(%)", ROUND(t."<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʣ<EFBFBD>ȫ<EFBFBD>£<EFBFBD>(%)",
2) XBL 2) XBL
FROM BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD> T FROM "BI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD>ٱ<EFBFBD>-24<32><34>" T
WHERE T.<2E><><EFBFBD>β<EFBFBD><CEB2><EFBFBD> = L_DEPARTMENT_NAME WHERE T.<2E><><EFBFBD>β<EFBFBD><CEB2><EFBFBD> = L_DEPARTMENT_NAME
ORDER BY XBL DESC) PAIHANG; ORDER BY XBL DESC) PAIHANG;
END; END;

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 <20><><EFBFBD><EFBFBD>BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD>; PROCEDURE <20><><EFBFBD><EFBFBD>BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD>;
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 <20><><EFBFBD><EFBFBD>BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD> IS PROCEDURE <20><><EFBFBD><EFBFBD>BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD> IS
BEGIN BEGIN
@@ -23,7 +23,8 @@ CREATE OR REPLACE PACKAGE BODY telsale_bi_utils IS
PROCEDURE <20><><EFBFBD><EFBFBD>BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD> IS PROCEDURE <20><><EFBFBD><EFBFBD>BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD> IS
BEGIN BEGIN
EXECUTE IMMEDIATE 'truncate table BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD>'; --EXECUTE IMMEDIATE 'truncate table BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD>';
EXECUTE IMMEDIATE 'truncate table "BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD>-24<32><34>"';
END; END;
PROCEDURE <20><><EFBFBD><EFBFBD>BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD> IS PROCEDURE <20><><EFBFBD><EFBFBD>BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD> IS
@@ -33,11 +34,12 @@ CREATE OR REPLACE PACKAGE BODY telsale_bi_utils IS
PROCEDURE <20><><EFBFBD><EFBFBD>BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD> IS PROCEDURE <20><><EFBFBD><EFBFBD>BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD> IS
BEGIN BEGIN
EXECUTE IMMEDIATE 'truncate table BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD><C2B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD>'; --EXECUTE IMMEDIATE 'truncate table BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD><C2B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD>';
EXECUTE IMMEDIATE 'truncate table "BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD>-24<32><34>"';
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<62><69><EFBFBD>ݱ<EFBFBD><DDB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>صĹ<D8B5><C4B9><EFBFBD>
PROCEDURE <20><><EFBFBD><EFBFBD>BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD>;
PROCEDURE <20><><EFBFBD><EFBFBD>BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD>;
PROCEDURE <20><><EFBFBD><EFBFBD>BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD>;
PROCEDURE <20><><EFBFBD><EFBFBD>BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD>;
END TELSALE_BI_UTILS_DEV;
/
CREATE OR REPLACE PACKAGE BODY TELSALE_BI_UTILS_DEV IS
PROCEDURE <20><><EFBFBD><EFBFBD>BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD> IS
BEGIN
EXECUTE IMMEDIATE 'truncate table BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD>';
END;
PROCEDURE <20><><EFBFBD><EFBFBD>BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD> IS
BEGIN
--EXECUTE IMMEDIATE 'truncate table BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD>';
EXECUTE IMMEDIATE 'truncate table "BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD>-24<32><34>"';
END;
PROCEDURE <20><><EFBFBD><EFBFBD>BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD> IS
BEGIN
EXECUTE IMMEDIATE 'truncate table BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD>';
END;
PROCEDURE <20><><EFBFBD><EFBFBD>BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD> IS
BEGIN
--EXECUTE IMMEDIATE 'truncate table BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD><C2B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD>';
EXECUTE IMMEDIATE 'truncate table "BI<42><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><CAB8>ٱ<EFBFBD>-24<32><34>"';
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;
--<EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> --<EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
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 <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><EFBFBD><EFBFBD> FROM <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><EFBFBD><EFBFBD>
@@ -35,7 +35,7 @@ SELECT *
SELECT <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, SELECT <EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
SUM(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, SUM(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
SUM(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><EFBFBD><EFBFBD>, SUM(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) <EFBFBD><EFBFBD><EFBFBD>ڱ<EFBFBD><EFBFBD><EFBFBD>,
round((SUM(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>) / SUM(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)) * 100, ROUND((SUM(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>) / SUM(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)) * 100,
0) || '%' <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 0) || '%' <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FROM <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><EFBFBD> FROM <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><EFBFBD>
GROUP BY <EFBFBD><EFBFBD><EFBFBD><EFBFBD>; GROUP BY <EFBFBD><EFBFBD><EFBFBD><EFBFBD>;
@@ -46,7 +46,7 @@ SELECT
<EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
SUM(<EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><EFBFBD>˿ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>), SUM(<EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><EFBFBD>˿ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>),
SUM(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ںϱ<EFBFBD><EFBFBD><EFBFBD>), SUM(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ںϱ<EFBFBD><EFBFBD><EFBFBD>),
round(SUM(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ںϱ<EFBFBD><EFBFBD><EFBFBD>) / SUM(<EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><EFBFBD>˿ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) * 100, ROUND(SUM(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ںϱ<EFBFBD><EFBFBD><EFBFBD>) / SUM(<EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><EFBFBD>˿ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) * 100,
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>
GROUP BY <EFBFBD>·<EFBFBD>, GROUP BY <EFBFBD>·<EFBFBD>,
@@ -57,7 +57,7 @@ HAVING
<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><EFBFBD> DESC; <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD><EFBFBD> DESC;
SELECT <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, SELECT <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
round(SUM(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ںϱ<EFBFBD><EFBFBD><EFBFBD>) / SUM(<EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><EFBFBD>˿ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) * 100, ROUND(SUM(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ںϱ<EFBFBD><EFBFBD><EFBFBD>) / SUM(<EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><EFBFBD>˿ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) * 100,
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'
@@ -68,37 +68,37 @@ SELECT
--<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> --<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
SELECT <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, SELECT <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>,
round(nvl(SUM(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>) / SUM(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) * 100, ROUND(NVL(SUM(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>) / SUM(<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) * 100,
0), 0),
2) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 2) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
FROM <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><EFBFBD> xb FROM <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><EFBFBD> XB
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, 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 = '<EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD>' WHERE ZX.SALER_NAME = '<EFBFBD>ų<EFBFBD><EFBFBD><EFBFBD>'
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<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD>ʸ<EFBFBD><EFBFBD>ٱ<EFBFBD>; truncate table BI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD>ʸ<EFBFBD><EFBFBD>ٱ<EFBFBD>;
*/ */
SELECT * SELECT *
FROM BI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD>ʸ<EFBFBD><EFBFBD>ٱ<EFBFBD> t 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>'; WHERE T.<EFBFBD><EFBFBD><EFBFBD><EFBFBD> = '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>';
SELECT * SELECT *
FROM BI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD>ٱ<EFBFBD> FROM "BI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD>ٱ<EFBFBD>-24<32><34>"
WHERE <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>'; WHERE <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = '<EFBFBD><EFBFBD><EFBFBD><EFBFBD>';
SELECT * SELECT *
FROM BI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD>ʸ<EFBFBD><EFBFBD>ٱ<EFBFBD>; FROM BI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD>ʸ<EFBFBD><EFBFBD>ٱ<EFBFBD>;
SELECT * SELECT *
FROM BI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD>ٱ<EFBFBD>; FROM "BI<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʸ<EFBFBD><EFBFBD>ٱ<EFBFBD>-24<32><34>";

View File

@@ -0,0 +1,17 @@
npm uninstall `
@babel/eslint-parser `
@rushstack/eslint-patch `
@typescript-eslint/eslint-plugin `
@vitejs/plugin-vue `
@vue/cli-plugin-eslint `
@vue/eslint-config-typescript `
babel `
eslint-config-recommended `
eslint-config-standard-with-typescript `
eslint-plugin-vue `
node-sass `
sass `
sass-loader `
style-loader `
ts-node `
vue-eslint-parser

View File

@@ -0,0 +1,40 @@
{
"name": "task_schedule",
"private": true,
"version": "0.0.0",
"type": "module",
"scripts": {
"dev": "vite",
"build": "vite build",
"preview": "vite preview"
},
"dependencies": {
"@element-plus/icons-vue": "^2.3.1",
"echarts": "^5.4.3",
"element-plus": "^2.5.3",
"mitt": "^3.0.1",
"moment": "^2.30.1",
"vue": "^3.4.15",
"vue-router": "^4.2.5",
"vuex": "^4.1.0"
},
"devDependencies": {
"@babel/eslint-parser": "^7.23.3",
"@rushstack/eslint-patch": "^1.7.1",
"@typescript-eslint/eslint-plugin": "^6.19.1",
"@vitejs/plugin-vue": "^5.0.3",
"@vue/cli-plugin-eslint": "^5.0.8",
"@vue/eslint-config-typescript": "^12.0.0",
"axios": "^1.6.6",
"babel": "^6.23.0",
"eslint-config-recommended": "^4.1.0",
"eslint-config-standard-with-typescript": "^43.0.1",
"eslint-plugin-vue": "^9.20.1",
"node-sass": "^9.0.0",
"sass": "^1.70.0",
"sass-loader": "^14.0.0",
"style-loader": "^3.3.4",
"ts-node": "^10.9.2",
"vue-eslint-parser": "^9.4.2"
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -9,32 +9,22 @@
"preview": "vite preview" "preview": "vite preview"
}, },
"dependencies": { "dependencies": {
"@element-plus/icons-vue": "^2.3.1", "@element-plus/icons-vue": "^2.3.2",
"echarts": "^5.4.3", "axios": "^1.11.0",
"element-plus": "^2.4.4", "echarts": "^6.0.0",
"element-plus": "^2.11.1",
"mitt": "^3.0.1", "mitt": "^3.0.1",
"moment": "^2.29.4", "moment": "^2.30.1",
"sass-loader": "^13.3.2", "task_schedule": "file:",
"vue": "^3.3.13", "vue": "^3.5.21",
"vue-router": "^4.2.5", "vue-router": "^4.5.1",
"vuex": "^4.1.0" "vuex": "^4.1.0"
}, },
"devDependencies": { "devDependencies": {
"@babel/eslint-parser": "^7.23.3", "@vitejs/plugin-vue": "^6.0.1",
"@rushstack/eslint-patch": "^1.6.1",
"@typescript-eslint/eslint-plugin": "^6.15.0",
"@vitejs/plugin-vue": "^4.5.2",
"@vue/cli-plugin-eslint": "^5.0.8",
"@vue/eslint-config-typescript": "^12.0.0",
"axios": "^1.6.2",
"babel": "^6.23.0",
"eslint-config-recommended": "^4.1.0", "eslint-config-recommended": "^4.1.0",
"eslint-config-standard-with-typescript": "^43.0.0", "eslint-config-standard-with-typescript": "^43.0.1",
"eslint-plugin-vue": "^9.19.2", "eslint-plugin-vue": "^10.4.0",
"node-sass": "^9.0.0", "ts-node": "^10.9.2"
"sass": "^1.69.5",
"style-loader": "^3.3.3",
"ts-node": "^10.9.2",
"vue-eslint-parser": "^9.3.2"
} }
} }

View File

@@ -78,32 +78,22 @@
// @ts-expect-error 之后再补充类型文件 // @ts-expect-error 之后再补充类型文件
import { hasOnlyChild } from "@/router/index.js"; import { hasOnlyChild } from "@/router/index.js";
import { useRoute, useRouter } from "vue-router"; import { useRoute, useRouter } from "vue-router";
// import { useRoute, useRouter, type RouteRecordNormalized, type _RouteRecordBase } from "vue-router";
import { computed } from "vue"; import { computed } from "vue";
// declare interface SideBarRouteRecordNormalized extends RouteRecordNormalized
// {
// hidden?: boolean;
// }
// declare interface SideBarRouteRecordSingleView extends _RouteRecordBase
// {
// }
export default { export default {
name: "LayoutAside", name: "LayoutAside",
setup() setup()
{ {
const userRout = useRoute();
const router = useRouter(); const router = useRouter();
const routes = router.getRoutes();// as SideBarRouteRecordNormalized[]; const routes = router.getRoutes();// as SideBarRouteRecordNormalized[];
const currentPath = computed(() => const currentPath = computed(() =>
{ {
return useRoute().path; return userRout.path;
}); });
return { routes, currentPath, hasOnlyChild, }; return { userRout, routes, currentPath, hasOnlyChild, };
}, },
}; };
</script> </script>

View File

@@ -12,7 +12,7 @@
<span class="company-name">CPIC</span> <span class="company-name">CPIC</span>
<div class="version-wrapper"> <div class="version-wrapper">
<span>桌面霸屏后台管理</span> <span>桌面霸屏后台管理</span>
<span>Build-20231220</span> <span>Build-20240111</span>
</div> </div>
<div class="buttons-wrapper"> <div class="buttons-wrapper">
<component <component

View File

@@ -0,0 +1,89 @@
/*
* @Author: Kane
* @Date: 2023-05-25 21:55:14
* @LastEditors: Kane
* @FilePath: /task_schedule/src/test/identify.ts
* @Description:
*
* Copyright (c) ${2022} by Kane, All Rights Reserved.
*/
import { type AxiosResponse } from "axios";
import { service as instance } from "../utils/api/request.js";
import { API_URL } from "../utils/api/config.js";
// import { login, loginCaller, type LoginCallerInfo } from "../utils/account.js";
interface LoginInfo
{
p13account: string;
password: string;
}
interface LoginCallerInfo
{
telsaler_code: string;
}
async function loginCaller( data: LoginCallerInfo ): Promise<AxiosResponse<any, any>>
{
return await instance.request(
{
method: "post",
url: API_URL.URL_LOGIN_CALLER,
data,
});
}
function loginTestCaller(): void
{
const info: LoginCallerInfo =
{
telsaler_code: "61136",
};
loginCaller( info )
.then(( response ) =>
{
console.log( response.data );
})
.catch(( error ) =>
{
console.log( error );
});
}
async function newCitizen( data: any ): Promise<AxiosResponse<any, any>>
{
return await instance.request(
{
method: "post",
url: "http://10.39.0.41:8081/NewCitizen/identify.do",
data,
}
);
}
function testNewCitizen(): void
{
const data = {
idcard_no: "350402198106130016",
name: "王炜",
};
newCitizen( data )
.then(( response ) =>
{
console.log( response.data );
})
.catch(( error ) =>
{
console.log( error );
});
}
export {
loginTestCaller,
testNewCitizen,
type LoginInfo,
type LoginCallerInfo
};

View File

@@ -0,0 +1,50 @@
import { type AxiosResponse } from "axios";
import { service as instance } from "../utils/api/request.js";
import { API_URL } from "../utils/api/config.js";
// import { login, loginCaller, type LoginCallerInfo } from "../utils/account.js";
interface LoginInfo
{
p13account: string;
password: string;
}
interface LoginCallerInfo
{
telsaler_code: string;
}
async function loginCaller( data: LoginCallerInfo ): Promise<AxiosResponse<any, any>>
{
return await instance.request(
{
method: "post",
url: API_URL.URL_LOGIN_CALLER,
data,
});
}
function loginTestCaller(): void
{
const info: LoginCallerInfo =
{
telsaler_code: "61136",
};
loginCaller( info )
.then(( response ) =>
{
console.log( response.data );
})
.catch(( error ) =>
{
console.log( error );
});
}
export {
loginTestCaller,
type LoginInfo,
type LoginCallerInfo
};

View File

@@ -0,0 +1,35 @@
/*
* @Author: Kane
* @Date: 2023-11-06 14:50:08
* @LastEditors: Kane
* @FilePath: /task_schedule/src/test/testBI.ts
* @Description: 测试bi相关的代码
*
* Copyright (c) ${2023} by Kane, All Rights Reserved.
*/
import {
type BIReportType,
type ImportBIReportRequest,
type ImportBIReportResponse,
type ImportBIReportResponseHandler,
type BITelsalerAttachingRateRecord,
type QueryBITelsalerAttachingRateReportResponse,
type QueryBITelsalerAttachingRateDataHandler,
type BITelsalerRenewalRateRecord,
importBIReport,
queryBITelsalerAttachingRateData
} from "../utils/BIReport.ts";
function handler( response: QueryBITelsalerAttachingRateReportResponse, error: any ): void
{
if ( response.success )
{
console.log( response );
}
else
{
console.log( error );
}
}
queryBITelsalerAttachingRateData( handler );

View File

@@ -0,0 +1,28 @@
/*
* @Author: Kane
* @Date: 2023-08-28 16:02:11
* @LastEditors: Kane
* @FilePath: /task_schedule/src/test/testCallerArchievement.ts
* @Description:
*
* Copyright (c) ${2022} by Kane, All Rights Reserved.
*/
import { queryCallerArchievement, type CallerArchievement } from "../utils/archievement.js";
import { type TelSaler } from "../types/cpicxim/TelSaler.js";
const callInfo: TelSaler =
{
telSalerCode: "61136",
telSalerName: "陈榕榕",
teamCode: "",
teamName: "",
departmentCode: "",
departmentName: "",
};
function render(): void
{
}
queryCallerArchievement( callInfo, render );

View File

@@ -0,0 +1,31 @@
/*
* @Author: Kane
* @Date: 2023-06-07 10:16:00
* @LastEditors: Kane
* @FilePath: /task_schedule/src/test/testRankingListRequest.ts
* @Description:
*
* Copyright (c) ${2022} by Kane, All Rights Reserved.
*/
import { type AxiosResponse } from "axios";
// import { service as instance } from "../utils/api/request.js";
// import { API_URL } from "../utils/api/config.js";
// import { type RankingListItem } from "../types/cpicxim/RankingListItem.js";
import {
type RankingListRequest,
type RankingListResponse,
requestRankingList
} from "../utils/ranking.js";
function testRankingListRequest(): void
{
const req: RankingListRequest = {
departmentCode: "QDI",
year: "2023",
month: "06",
};
requestRankingList( req );
}
export { testRankingListRequest };

View File

@@ -0,0 +1,30 @@
/*
* @Author: Kane
* @Date: 2023-09-11 14:16:30
* @LastEditors: Kane
* @FilePath: /task_schedule/src/test/testRewardRequest.ts
* @Description:
*
* Copyright (c) ${2022} by Kane, All Rights Reserved.
*/
import {
type RewardProject,
type RewardGainer,
type RewardProjectResponse,
requestRewardPorjectsList,
requestRewardGainers
} from "../utils/reward.js";
function render( data: any, error?: any ): void
{
console.log( data );
if ( error !== null )
{
console.log( "请求失败,", error );
}
}
requestRewardPorjectsList( render );
requestRewardGainers( render );

View File

@@ -11,10 +11,12 @@
"compilerOptions": { "compilerOptions": {
"forceConsistentCasingInFileNames": true, "forceConsistentCasingInFileNames": true,
"useDefineForClassFields": true, "useDefineForClassFields": true,
"allowImportingTsExtensions": true,
"noEmit": true,
"target": "ESNext", "target": "ESNext",
"module": "ESNext", "module": "NodeNext",
// "module": "CommonJS", // "module": "CommonJS",
"moduleResolution": "node", "moduleResolution": "NodeNext",
"strict": true, "strict": true,
"jsx": "preserve", "jsx": "preserve",
"sourceMap": true, "sourceMap": true,
@@ -47,6 +49,7 @@
"./node_modules", "./node_modules",
], ],
"ts-node": { "ts-node": {
"esm": true "esm": true,
"require": ["tsconfig-paths/register"],
}, },
} }

View File

@@ -7,8 +7,8 @@
* *
* Copyright (c) ${2023} by Kane, All Rights Reserved. * Copyright (c) ${2023} by Kane, All Rights Reserved.
*/ */
import { service as instance } from "./api/request.js"; import { service as instance } from "./api/request.ts";
import { API_URL } from "./api/config.js"; import { API_URL } from "./api/config.ts";
import { type AxiosResponse } from "axios"; import { type AxiosResponse } from "axios";
interface BIReportType interface BIReportType
{ {

View File

@@ -27,6 +27,7 @@ function loadStaffInfo(): StaffInfo
obj = {}; obj = {};
} }
/* eslint-disable */
const stuff = new StaffInfo( const stuff = new StaffInfo(
obj._p13uid ?? "", obj._p13uid ?? "",
obj._stuffCode ?? "", obj._stuffCode ?? "",
@@ -35,7 +36,7 @@ function loadStaffInfo(): StaffInfo
obj._department_name ?? "", obj._department_name ?? "",
obj._section_office_code ?? "", obj._section_office_code ?? "",
obj._section_office_name ?? "" ); obj._section_office_name ?? "" );
/* eslint-enable */
return stuff; return stuff;
} }

View File

@@ -13,7 +13,7 @@ import axios, { type AxiosInstance } from "axios";
const service: AxiosInstance = axios.create( const service: AxiosInstance = axios.create(
{ {
baseURL: "", baseURL: "",
timeout: 10000, timeout: 30000,
} }
); );

View File

@@ -7,7 +7,7 @@
* *
* Copyright (c) ${2023} by Kane, All Rights Reserved. * Copyright (c) ${2023} by Kane, All Rights Reserved.
*/ */
import { service as instance } from "@/utils/api/request.js"; // import { service as instance } from "@/utils/api/request.ts";
interface SystemParameter interface SystemParameter
{ {

View File

@@ -7,10 +7,10 @@
* *
* Copyright (c) ${2022} by Kane, All Rights Reserved. * Copyright (c) ${2022} by Kane, All Rights Reserved.
*/ */
import { service as instance } from "./api/request.js"; import { service as instance } from "./api/request.ts";
import { API_URL } from "./api/config.js"; import { API_URL } from "./api/config.ts";
import { type Department } from "../types/cpicxim/Department.js"; import { type Department } from "../types/cpicxim/Department.ts";
import { type TelSaler } from "../types/cpicxim/TelSaler.js"; import { type TelSaler } from "../types/cpicxim/TelSaler.ts";
import { type AxiosResponse } from "axios"; import { type AxiosResponse } from "axios";
interface DepartmentArchievement // 定义业绩对象的结构 interface DepartmentArchievement // 定义业绩对象的结构
@@ -93,7 +93,7 @@ function queryDepartmentArchievement( departmentInfo: Department, render: any ):
data.mensual_archievement_list.sort(( a: any, b: any ) => a.month - b.month ); data.mensual_archievement_list.sort(( a: any, b: any ) => a.month - b.month );
data.mensual_archievement_list.forEach(( item: any ) => data.mensual_archievement_list.forEach(( item: any ) =>
{ {
archievement.mensual_archievement_list.push( item.premium ); archievement.mensual_archievement_list.push( item.premium ); // eslint-disable-line
}); });
console.log( "每月业绩", archievement ); console.log( "每月业绩", archievement );
@@ -169,7 +169,7 @@ function queryCallerArchievement( callerInfo: TelSaler, render: any ): void
callArchievement.attaching_rate = data.attaching_rate ?? "0.0"; callArchievement.attaching_rate = data.attaching_rate ?? "0.0";
// 检查业绩清单有没有缺漏缺漏的用0补上 // 检查业绩清单有没有缺漏缺漏的用0补上
const checkedList = checkMensualArchievement( data.mensual_archievement_list ); const checkedList = checkMensualArchievement( data.mensual_archievement_list ); // eslint-disable-line
// 排序一下 // 排序一下
checkedList.sort(( a: MenusalArchievementItem, b: MenusalArchievementItem ): number => checkedList.sort(( a: MenusalArchievementItem, b: MenusalArchievementItem ): number =>

View File

@@ -7,9 +7,9 @@
* *
* Copyright (c) ${2022} by Kane, All Rights Reserved. * Copyright (c) ${2022} by Kane, All Rights Reserved.
*/ */
import { service as instance } from "./api/request.js"; import { service as instance } from "./api/request.ts";
import { API_URL } from "./api/config.js"; import { API_URL } from "./api/config.ts";
import { type RankingListItem } from "../types/cpicxim/RankingListItem.js"; import { type RankingListItem } from "../types/cpicxim/RankingListItem.ts";
/** /**
* 用于请求排行榜数据请求参数 * 用于请求排行榜数据请求参数
@@ -33,7 +33,7 @@ interface RankingListResponse
} }
// 判断用的正则表达式 // 判断用的正则表达式
const regexMonth = "(0[1-9])|(1[0-2])"; const regexMonth = "(0[1-9])|(1[0-2])"; // eslint-disable-line
/** /**
* 请求坐席排行榜。 * 请求坐席排行榜。

View File

@@ -8,8 +8,8 @@
* Copyright (c) ${2022} by Kane, All Rights Reserved. * Copyright (c) ${2022} by Kane, All Rights Reserved.
*/ */
import { type AxiosResponse } from "axios"; import { type AxiosResponse } from "axios";
import { service as instance } from "./api/request.js"; import { service as instance } from "./api/request.ts";
import { API_URL } from "./api/config.js"; import { API_URL } from "./api/config.ts";
interface RewardProject interface RewardProject
{ {
@@ -103,7 +103,7 @@ function requestRewardPorjectsList( handler: any ): void
const data = response.data ?? {}; const data = response.data ?? {};
rewardResponse.success = data.success ?? false; rewardResponse.success = data.success ?? false;
rewardResponse.message = data.message ?? ""; rewardResponse.message = data.message ?? "";
rewardResponse.rewardList = checkRewardProjects( data.rewardList ?? []); rewardResponse.rewardList = checkRewardProjects( data.rewardList ?? []); // eslint-disable-line
handler( rewardResponse, null ); handler( rewardResponse, null );
}) })
@@ -144,7 +144,7 @@ function requestRewardGainers( handler: any ): void
rewardResponse.success = data.success; rewardResponse.success = data.success;
rewardResponse.message = data.message; rewardResponse.message = data.message;
rewardResponse.gainerList = checkRewardGainers( data.gainerList ); rewardResponse.gainerList = checkRewardGainers( data.gainerList ); // eslint-disable-line
handler( rewardResponse, null ); handler( rewardResponse, null );
}) })

View File

@@ -7,7 +7,6 @@
* *
* 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-row :gutter="10">

View File

@@ -11,6 +11,8 @@
"compilerOptions": { "compilerOptions": {
"forceConsistentCasingInFileNames": true, "forceConsistentCasingInFileNames": true,
"useDefineForClassFields": true, "useDefineForClassFields": true,
"allowImportingTsExtensions": true,
"noEmit": true,
"target": "ESNext", "target": "ESNext",
"module": "ESNext", "module": "ESNext",
"moduleResolution": "node", "moduleResolution": "node",

View File

@@ -1,6 +0,0 @@
{
"name": "desktop_archievement_backend",
"lockfileVersion": 3,
"requires": true,
"packages": {}
}

View File

@@ -1,3 +1,4 @@
<?xml version="1.0" encoding="UTF-8" ?>
<project xmlns="http://maven.apache.org/POM/4.0.0" <project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
@@ -13,9 +14,9 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>17</maven.compiler.source> <maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target> <maven.compiler.target>17</maven.compiler.target>
<spring.version>5.3.30</spring.version> <!-- <spring.version>5.3.30</spring.version> -->
<log4j2.version>2.20.0</log4j2.version> <log4j2.version>2.20.0</log4j2.version>
<!-- <spring.version>6.0.11</spring.version> --> <spring.version>6.2.4</spring.version>
</properties> </properties>
<dependencies> <dependencies>
@@ -66,7 +67,7 @@
<dependency> <dependency>
<groupId>commons-io</groupId> <groupId>commons-io</groupId>
<artifactId>commons-io</artifactId> <artifactId>commons-io</artifactId>
<version>2.11.0</version> <version>2.18.0</version>
</dependency> </dependency>
<!--jackson--> <!--jackson-->
@@ -145,6 +146,7 @@
<version>3.5.13</version> <version>3.5.13</version>
</dependency> </dependency>
</dependencies> </dependencies>
<build> <build>
<finalName>desktop_archievement_backend</finalName> <finalName>desktop_archievement_backend</finalName>
<resources> <resources>

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

@@ -3,7 +3,7 @@
* @Date: 2023-10-09 21:45:39 * @Date: 2023-10-09 21:45:39
* @LastEditors: Kane * @LastEditors: Kane
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/pojo/BITelsalerRenewalRateRecord.java * @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/pojo/BITelsalerRenewalRateRecord.java
* @Description: BI导出的续保率Excel文件行记录。 * @Description: BI导出的坐席续保率 Excel文件行记录。
* *
* Copyright (c) ${2023} by Kane, All Rights Reserved. * Copyright (c) ${2023} by Kane, All Rights Reserved.
*/ */
@@ -20,12 +20,11 @@ public class BITelsalerRenewalRateRecord
private double 个车续保率全月; private double 个车续保率全月;
private double 环比昨日; private double 环比昨日;
private double 环比上月; private double 环比上月;
private double 平均提前签单天数; // private double 平均提前签单天数;
private double 环比; // private double 环比;
public BITelsalerRenewalRateRecord( String 责任部门, String 责任人, double 机构目标值, double 到期数全月, public BITelsalerRenewalRateRecord( String 责任部门, String 责任人, double 机构目标值, double 到期数全月,
double 序时到期数占比, double 个车续保率序时, double 个车续保率全月, double 环比昨日, double 环比上月, double 序时到期数占比, double 个车续保率序时, double 个车续保率全月, double 环比昨日, double 环比上月 )
double 平均提前签单天数, double 环比 )
{ {
this.责任部门 = 责任部门; this.责任部门 = 责任部门;
this.责任人 = 责任人; this.责任人 = 责任人;
@@ -36,32 +35,8 @@ public class BITelsalerRenewalRateRecord
this.个车续保率全月 = 个车续保率全月; this.个车续保率全月 = 个车续保率全月;
this.环比昨日 = 环比昨日; this.环比昨日 = 环比昨日;
this.环比上月 = 环比上月; this.环比上月 = 环比上月;
this.平均提前签单天数 = 平均提前签单天数;
this.环比 = 环比;
} }
public double get平均提前签单天数()
{
return 平均提前签单天数;
}
public void set平均提前签单天数( double 平均提前签单天数 )
{
this.平均提前签单天数 = 平均提前签单天数;
}
public double get环比()
{
return 环比;
}
public void set环比( double 环比 )
{
this.环比 = 环比;
}
public String get责任部门() public String get责任部门()
{ {
return 责任部门; return 责任部门;
@@ -94,10 +69,6 @@ public class BITelsalerRenewalRateRecord
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));
temp = Double.doubleToLongBits( 平均提前签单天数 );
result = prime * result + (int) (temp ^ (temp >>> 32));
temp = Double.doubleToLongBits( 环比 );
result = prime * result + (int) (temp ^ (temp >>> 32));
return result; return result;
} }
@@ -139,10 +110,6 @@ public class BITelsalerRenewalRateRecord
return false; return false;
if ( Double.doubleToLongBits( 环比上月 ) != Double.doubleToLongBits( other.环比上月 ) ) if ( Double.doubleToLongBits( 环比上月 ) != Double.doubleToLongBits( other.环比上月 ) )
return false; return false;
if ( Double.doubleToLongBits( 平均提前签单天数 ) != Double.doubleToLongBits( other.平均提前签单天数 ) )
return false;
if ( Double.doubleToLongBits( 环比 ) != Double.doubleToLongBits( other.环比 ) )
return false;
return true; return true;
} }
@@ -151,8 +118,7 @@ public class BITelsalerRenewalRateRecord
{ {
return "BITelsalerRenewalRateRecord [责任部门=" + 责任部门 + ", 责任人=" + 责任人 + ", 机构目标值=" + 机构目标值 return "BITelsalerRenewalRateRecord [责任部门=" + 责任部门 + ", 责任人=" + 责任人 + ", 机构目标值=" + 机构目标值
+ ", 到期数全月=" + 到期数全月 + ", 序时到期数占比=" + 序时到期数占比 + ", 个车续保率序时=" + 个车续保率序时 + ", 到期数全月=" + 到期数全月 + ", 序时到期数占比=" + 序时到期数占比 + ", 个车续保率序时=" + 个车续保率序时
+ ", 个车续保率全月=" + 个车续保率全月 + ", 环比昨日=" + 环比昨日 + ", 环比上月=" + 环比上月 + ", 平均提前签单天数=" + ", 个车续保率全月=" + 个车续保率全月 + ", 环比昨日=" + 环比昨日 + ", 环比上月=" + 环比上月 + "]";
+ 平均提前签单天数 + ", 环比=" + 环比 + "]";
} }
public String get责任人() public String get责任人()

View File

@@ -34,21 +34,24 @@ 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(%)", "到期数-全月", "序时到期数占比(%)", "个车续保率(序时)(%)", "个车续保率(全月)(%)", "环比昨日(%)",
"环比上月(%)", "平均提前签单天数", "环比",}; "环比上月(%)", "序时-部门内", "全月-部门内",};
/** /**
* 用于通过对比标题行判断excel文件格式的函数。 * 用于通过对比标题行判断excel文件格式的函数。
@@ -95,6 +98,8 @@ public final class ImportBIExcelData
{ {
String cellString = MyPOIUtils.getStringCellValue( cell ); String cellString = MyPOIUtils.getStringCellValue( cell );
logger.info( "比较报表标题行,待导入报表标题:" + cellString + ";验证标题:" + title[cellIndex] );
if ( !cellString.equals( title[cellIndex] ) ) if ( !cellString.equals( title[cellIndex] ) )
{ {
result = false; result = false;
@@ -320,11 +325,11 @@ public final class ImportBIExcelData
double 个车续保率全月 = MyPOIUtils.getNumbericCellValue( row, 6 ) * 100; double 个车续保率全月 = MyPOIUtils.getNumbericCellValue( row, 6 ) * 100;
double 环比昨日 = MyPOIUtils.getNumbericCellValue( row, 7 ) * 100; double 环比昨日 = MyPOIUtils.getNumbericCellValue( row, 7 ) * 100;
double 环比上月 = MyPOIUtils.getNumbericCellValue( row, 8 ) * 100; double 环比上月 = MyPOIUtils.getNumbericCellValue( row, 8 ) * 100;
double 平均提前签单天数 = MyPOIUtils.getNumbericCellValue( row, 9 ); // double 平均提前签单天数 = MyPOIUtils.getNumbericCellValue( row, 9 );
double 环比 = MyPOIUtils.getNumbericCellValue( row, 10 ); // double 环比 = MyPOIUtils.getNumbericCellValue( row, 10 );
BITelsalerRenewalRateRecord record = new BITelsalerRenewalRateRecord( 责任部门, 责任人, BITelsalerRenewalRateRecord record = new BITelsalerRenewalRateRecord( 责任部门, 责任人,
机构目标值, 到期数全月, 序时到期数占比, 个车续保率序时, 个车续保率全月, 环比昨日, 环比上月, 平均提前签单天数, 环比 ); 机构目标值, 到期数全月, 序时到期数占比, 个车续保率序时, 个车续保率全月, 环比昨日, 环比上月 );
records.add( record ); records.add( record );
} }
@@ -499,11 +504,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

@@ -70,6 +70,8 @@ public class ImportBIDataController
} }
else if ( type == ReportType.TWrTelsalerList.getReportTypeCode() ) else if ( type == ReportType.TWrTelsalerList.getReportTypeCode() )
{ {
logger.info( "导入机构续保率报表。");
importedCount = importTWrTelsalerList( filePath, sheetIndex, firstRow ); importedCount = importTWrTelsalerList( filePath, sheetIndex, firstRow );
} }

View File

@@ -1,8 +1,12 @@
/* /*
* @Author: Kane * @Author: Kane
*
* @Date: 2023-02-28 22:52:32 * @Date: 2023-02-28 22:52:32
*
* @LastEditors: Kane * @LastEditors: Kane
*
* @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/filters/cros/CrosFilter.java * @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/filters/cros/CrosFilter.java
*
* @Description: * @Description:
* *
* Copyright (c) ${2022} by Kane, All Rights Reserved. * Copyright (c) ${2022} by Kane, All Rights Reserved.
@@ -23,21 +27,22 @@ import org.springframework.http.HttpMethod;
public class CrosFilter implements Filter public class CrosFilter implements Filter
{ {
private static Logger logger = LoggerFactory.getLogger(CrosFilter.class); private static Logger logger = LoggerFactory.getLogger( CrosFilter.class );
@Override @Override
public void doFilter( ServletRequest req, ServletResponse resp, FilterChain chain ) public void doFilter( ServletRequest req, ServletResponse resp, FilterChain chain )
throws ServletException, IOException throws ServletException,
IOException
{ {
HttpServletRequest request = (HttpServletRequest) req; HttpServletRequest request = ( HttpServletRequest ) req;
HttpServletResponse response = (HttpServletResponse) resp; HttpServletResponse response = ( HttpServletResponse ) resp;
String method = request.getMethod(); String method = request.getMethod();
String originHeader = request.getHeader( "Origin" ); String originHeader = request.getHeader( "Origin" );
logger.info( "收到" + method + "请求,来自" + originHeader); logger.info( "收到" + method + "请求,来自" + originHeader );
// 如果是Options请求 // 如果是Options请求
if ( method.equals(HttpMethod.OPTIONS.toString()) ) if ( method.equals( HttpMethod.OPTIONS.toString() ) )
{ {
originHeader = "*"; originHeader = "*";
} }
@@ -46,7 +51,7 @@ public class CrosFilter implements Filter
response.setHeader( "Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT" ); response.setHeader( "Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE, PUT" );
response.setHeader( "Access-Control-Max-Age", "0" ); response.setHeader( "Access-Control-Max-Age", "0" );
response.setHeader( "Access-Control-Allow-Headers", response.setHeader( "Access-Control-Allow-Headers",
"Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With,userId,token" ); "Origin, No-Cache, X-Requested-With, If-Modified-Since, Pragma, Last-Modified, Cache-Control, Expires, Content-Type, X-E4M-With,userId,token" );
response.setHeader( "Access-Control-Allow-Credentials", "true" ); response.setHeader( "Access-Control-Allow-Credentials", "true" );
response.setHeader( "XDomainRequestAllowed", "1" ); response.setHeader( "XDomainRequestAllowed", "1" );
response.setHeader( "XDomainRequestAllowed", "1" ); response.setHeader( "XDomainRequestAllowed", "1" );

View File

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

View File

@@ -43,10 +43,8 @@
t."个车续保率(序时)(%)" as 个车续保率序时, t."个车续保率(序时)(%)" as 个车续保率序时,
t."个车续保率(全月)(%)" as 个车续保率全月, t."个车续保率(全月)(%)" as 个车续保率全月,
t."环比昨日(%)" as 环比昨日, t."环比昨日(%)" as 环比昨日,
t."环比上月(%)" as 环比上月, t."环比上月(%)" as 环比上月
t.平均提前签单天数, from "BI电销坐席续保率跟踪表-24年" t
t.环比
from BI电销坐席续保率跟踪表 t
</select> </select>
<resultMap id="BITelsalerRenewalRate" type="com.cpic.xim.mybatis.pojo.BITelsalerRenewalRateRecord"> <resultMap id="BITelsalerRenewalRate" type="com.cpic.xim.mybatis.pojo.BITelsalerRenewalRateRecord">
<result property="责任部门" column="责任部门" javaType="String" jdbcType="VARCHAR" /> <result property="责任部门" column="责任部门" javaType="String" jdbcType="VARCHAR" />
@@ -58,8 +56,8 @@
<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" /> -->
<result property="环比" column="环比" javaType="int" jdbcType="DOUBLE" /> <!-- <result property="环比" column="环比" javaType="int" jdbcType="DOUBLE" /> -->
</resultMap> </resultMap>
<!-- 机构渗透率 --> <!-- 机构渗透率 -->
@@ -104,10 +102,8 @@
t."个车续保率(序时)(%)" as 个车续保率序时, t."个车续保率(序时)(%)" as 个车续保率序时,
t."个车续保率(全月)(%)" as 个车续保率全月, t."个车续保率(全月)(%)" as 个车续保率全月,
t."环比昨日(%)" as 环比昨日, t."环比昨日(%)" as 环比昨日,
t."环比上月(%)" as 环比上月, t."环比上月(%)" as 环比上月
t.平均提前签单天数, from "BI机构续保率跟踪表-24年" t
t.环比
from BI机构当月个车续保率跟踪表 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" />
@@ -118,7 +114,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

@@ -1,7 +1,11 @@
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" <?xml version="1.0" encoding="UTF-8"?>
<web-app
version="4.0"
xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:javaee="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xml="http://www.w3.org/XML/1998/namespace"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd">
version="3.1">
<display-name>Archetype Created Web Application</display-name> <display-name>Archetype Created Web Application</display-name>

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.