Compare commits
	
		
			36 Commits
		
	
	
		
			feature-ra
			...
			mybatis
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 8e0505bd49 | |||
| a74e612546 | |||
| 42c2e8bdf7 | |||
| 83be988941 | |||
| 2a92179adf | |||
| 9976c852ba | |||
| fd59698264 | |||
| f5a53e2f55 | |||
| 5b6285993f | |||
| b2a973f7bd | |||
| dcc925bb41 | |||
| 8fd60d6b24 | |||
| 090a551066 | |||
| 9483b49a20 | |||
| e436fbf89e | |||
| 0875919b5f | |||
| a5b008f056 | |||
| ada65278a1 | |||
| 38ec1c7d6c | |||
| 7ab604f3dd | |||
| 374a87e1ee | |||
| 7304ccf2e8 | |||
| ff487c3fb6 | |||
| a9b6e88733 | |||
| 9111067e63 | |||
| 702ab2c4d1 | |||
| c08b85cbe4 | |||
| 068c56e1c9 | |||
| 73d03bfe9b | |||
| 6d4ca8cf96 | |||
| 5344f2e0ea | |||
| 78ae920795 | |||
| d39e731a1e | |||
| 16574b6a47 | |||
| c4b1c754a9 | |||
| dbc5066aed | 
| @@ -8,7 +8,10 @@ CREATE OR REPLACE PACKAGE telsale_archievement_pkg IS | |||||||
|  |  | ||||||
|     -- <20>쳣 |     -- <20>쳣 | ||||||
|     DEPARTMENTCODE_EXCEPTION_CODE CONSTANT INTEGER := -20000; |     DEPARTMENTCODE_EXCEPTION_CODE CONSTANT INTEGER := -20000; | ||||||
|     DEPARTMENTCODE_EXCEPTION_MSG  CONSTANT VARCHAR2(100) := '<27><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD><EFBFBD><EFBFBD>Ч'; |     DEPARTMENTCODE_EXCEPTION_MSG  CONSTANT VARCHAR2(100) := '<27><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>'; | ||||||
|  |  | ||||||
|  |     CALLERCODE_EXCEPTION_CODE CONSTANT INTEGER := -20001; | ||||||
|  |     CALLERCODE_EXCEPTION_MSG  CONSTANT VARCHAR2(100) := '<27><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7>'; | ||||||
|  |  | ||||||
|     PROCEDURE department_archievement |     PROCEDURE department_archievement | ||||||
|     ( |     ( | ||||||
| @@ -19,6 +22,15 @@ CREATE OR REPLACE PACKAGE telsale_archievement_pkg IS | |||||||
|         a_mensual_cur     OUT cur_type |         a_mensual_cur     OUT cur_type | ||||||
|     ); |     ); | ||||||
|  |  | ||||||
|  |     PROCEDURE caller_archievement | ||||||
|  |     ( | ||||||
|  |         a_caller_code    IN VARCHAR2, | ||||||
|  |         a_attaching_rate OUT VARCHAR2, | ||||||
|  |         a_renewal_rate   OUT VARCHAR2, | ||||||
|  |         a_total          OUT INTEGER, | ||||||
|  |         a_mensual_cur    OUT cur_type | ||||||
|  |     ); | ||||||
|  |  | ||||||
|     PROCEDURE caller_arch_ranking_list |     PROCEDURE caller_arch_ranking_list | ||||||
|     ( |     ( | ||||||
|         a_department_code        IN VARCHAR2, |         a_department_code        IN VARCHAR2, | ||||||
| @@ -30,146 +42,233 @@ CREATE OR REPLACE PACKAGE telsale_archievement_pkg IS | |||||||
|  |  | ||||||
| END telsale_archievement_pkg; | END telsale_archievement_pkg; | ||||||
| / | / | ||||||
| CREATE OR REPLACE PACKAGE BODY telsale_archievement_pkg IS | CREATE OR REPLACE PACKAGE BODY TELSALE_ARCHIEVEMENT_PKG IS | ||||||
|  |     -- <20><><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5> | ||||||
|     -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB8> |     PROCEDURE DEPARTMENT_ARCHIEVEMENT | ||||||
|     PROCEDURE department_archievement |  | ||||||
|     ( |     ( | ||||||
|         a_department_code IN VARCHAR2, |         A_DEPARTMENT_CODE IN VARCHAR2, | ||||||
|         a_attaching_rate  OUT VARCHAR2, |         A_ATTACHING_RATE  OUT VARCHAR2, | ||||||
|         a_renewal_rate    OUT VARCHAR2, |         A_RENEWAL_RATE    OUT VARCHAR2, | ||||||
|         a_total           OUT INTEGER, |         A_TOTAL           OUT INTEGER, | ||||||
|         a_mensual_cur     OUT cur_type |         A_MENSUAL_CUR     OUT CUR_TYPE | ||||||
|     ) IS |     ) IS | ||||||
|         l_this_month      VARCHAR2(4); |         L_THIS_MONTH      VARCHAR2(4); | ||||||
|         l_this_year       VARCHAR2(4); |         L_THIS_YEAR       VARCHAR2(4); | ||||||
|         l_firstday        DATE; |         L_FIRSTDAY        DATE; | ||||||
|         l_department_name VARCHAR2(100); |         L_DEPARTMENT_NAME VARCHAR2(100); | ||||||
|     BEGIN |     BEGIN | ||||||
|         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(to_char(SYSDATE, |         L_FIRSTDAY   := TO_DATE(TO_CHAR(SYSDATE, | ||||||
|                                         'yyyy') || '-01-01 00:00:00', |                                         'yyyy') || '-01-01 00:00:00', | ||||||
|                                 'yyyy-mm-dd hh24:mi:ss'); |                                 'yyyy-mm-dd hh24:mi:ss'); | ||||||
|         -- <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |         -- <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|         BEGIN |         BEGIN | ||||||
|             SELECT department_name |             SELECT DEPARTMENT_NAME | ||||||
|               INTO l_department_name |               INTO L_DEPARTMENT_NAME | ||||||
|               FROM idst0.bm_t bm |               FROM IDST0.BM_T BM | ||||||
|              WHERE bm.department_code = a_department_code; |              WHERE BM.DEPARTMENT_CODE = A_DEPARTMENT_CODE; | ||||||
|         EXCEPTION |         EXCEPTION | ||||||
|             -- <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׳<EFBFBD><D7B3>쳣 |             -- <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׳<EFBFBD><D7B3>쳣 | ||||||
|             WHEN NO_DATA_FOUND THEN |             WHEN NO_DATA_FOUND THEN | ||||||
|                 raise_application_error(DEPARTMENTCODE_EXCEPTION_CODE, |                 RAISE_APPLICATION_ERROR(DEPARTMENTCODE_EXCEPTION_CODE, | ||||||
|                                         DEPARTMENTCODE_EXCEPTION_MSG); |                                         DEPARTMENTCODE_EXCEPTION_MSG); | ||||||
|              |         END; | ||||||
|  |         --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB8> | ||||||
|  |         SELECT DECODE(SUM(CF.<2E><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>), | ||||||
|  |                       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> = L_THIS_MONTH | ||||||
|  |            AND CF.<2E><><EFBFBD><EFBFBD> = L_THIS_YEAR | ||||||
|  |            AND <20><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD> = A_DEPARTMENT_CODE; | ||||||
|  |         --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |         SELECT DECODE(SUM(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>), | ||||||
|  |                       0, | ||||||
|  |                       0, | ||||||
|  |                       ROUND(SUM(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>) / SUM(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) * 100, | ||||||
|  |                             2)) | ||||||
|  |           INTO A_RENEWAL_RATE | ||||||
|  |           FROM <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3> | ||||||
|  |          WHERE <20><><EFBFBD><EFBFBD> = L_DEPARTMENT_NAME; | ||||||
|  |         --<2D><>ҵ<EFBFBD><D2B5> | ||||||
|  |         SELECT ROUND(NVL(SUM(CF.<2E><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD> + CF.<2E><><EFBFBD><EFBFBD><EFBFBD>ںϱ<DABA><CFB1><EFBFBD>), | ||||||
|  |                          0), | ||||||
|  |                      0) | ||||||
|  |           INTO A_TOTAL | ||||||
|  |           FROM <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD> CF | ||||||
|  |          WHERE <20><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD> = A_DEPARTMENT_CODE | ||||||
|  |            AND ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> >= L_FIRSTDAY | ||||||
|  |            AND ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <= SYSDATE; | ||||||
|  |         --ÿ<><C3BF>ҵ<EFBFBD><D2B5> | ||||||
|  |         OPEN A_MENSUAL_CUR FOR | ||||||
|  |             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>) / 10000, | ||||||
|  |                              0), | ||||||
|  |                          0) BF | ||||||
|  |               FROM <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD> CF | ||||||
|  |              WHERE <20><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD> = A_DEPARTMENT_CODE | ||||||
|  |                AND ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> >= TO_DATE(TO_CHAR(SYSDATE, | ||||||
|  |                                            'yyyy') || '-01-01 00:00:00', | ||||||
|  |                                    'yyyy-mm-dd hh24:mi:ss') | ||||||
|  |                AND ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> < TO_DATE(TO_CHAR(SYSDATE, | ||||||
|  |                                           'yyyy-mm') || '-01 00:00:00', | ||||||
|  |                                   'yyyy-mm-dd hh24:mi:ss') | ||||||
|  |              GROUP BY CF.<2E>·<EFBFBD> | ||||||
|  |              ORDER BY CF.<2E>·<EFBFBD>; | ||||||
|     END; |     END; | ||||||
|  |  | ||||||
|         --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB8> |     /*******************************************************/ | ||||||
|         SELECT decode(SUM(cf.<2E><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>), |     -- <20><>ϯҵ<CFAF><D2B5> | ||||||
|  |     PROCEDURE caller_archievement | ||||||
|  |     ( | ||||||
|  |         a_caller_code    IN VARCHAR2, | ||||||
|  |         a_attaching_rate OUT VARCHAR2, | ||||||
|  |         a_renewal_rate   OUT VARCHAR2, | ||||||
|  |         a_total          OUT INTEGER, | ||||||
|  |         a_mensual_cur    OUT cur_type | ||||||
|  |     ) IS | ||||||
|  |         l_caller_name VARCHAR2(100); | ||||||
|  |         l_this_month  VARCHAR2(4); | ||||||
|  |         l_this_year   VARCHAR2(4); | ||||||
|  |         l_firstday    DATE; | ||||||
|  |     BEGIN | ||||||
|  |         --<2D><>ѯ<EFBFBD><D1AF>ϯ<EFBFBD><CFAF><EFBFBD>ƣ<EFBFBD><C6A3><EFBFBD>֤<EFBFBD><D6A4><EFBFBD><EFBFBD> | ||||||
|  |         BEGIN | ||||||
|  |             SELECT saler_name | ||||||
|  |               INTO l_caller_name | ||||||
|  |               FROM tele_saler | ||||||
|  |              WHERE saler_code = a_caller_code; | ||||||
|  |         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>쳣 | ||||||
|  |             WHEN no_data_found THEN | ||||||
|  |                 raise_application_error(CALLERCODE_EXCEPTION_CODE, | ||||||
|  |                                         CALLERCODE_EXCEPTION_MSG); | ||||||
|  |         END; | ||||||
|  |      | ||||||
|  |         l_this_month := to_char(SYSDATE, | ||||||
|  |                                 'mm'); | ||||||
|  |         l_this_year  := to_char(SYSDATE, | ||||||
|  |                                 'yyyy'); | ||||||
|  |         l_firstday   := to_date(l_this_year || '-01-01 00:00:00', | ||||||
|  |                                 'yyyy-mm-dd hh24:mi:ss'); | ||||||
|  |      | ||||||
|  |         --<2D>ܳ<EFBFBD><DCB3>ձ<EFBFBD><D5B1><EFBFBD> | ||||||
|  |         SELECT round(nvl(SUM(cf.<2E><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>), | ||||||
|  |                          0), | ||||||
|  |                      2) bf | ||||||
|  |           INTO a_total | ||||||
|  |           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; | ||||||
|  |      | ||||||
|  |         --<2D><><EFBFBD><CDB8> | ||||||
|  |         SELECT decode(nvl(SUM(cf.<2E><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>), | ||||||
|  |                           0), | ||||||
|                       0, |                       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), |                       round(SUM(cf.<2E><><EFBFBD><EFBFBD><EFBFBD>ںϱ<DABA><CFB1><EFBFBD>) / SUM(cf.<2E><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>) * 100, | ||||||
|                             2)) |                             2)) | ||||||
|           INTO a_attaching_rate |           INTO a_attaching_rate | ||||||
|           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> = l_this_month |          WHERE cf.<2E><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> = a_caller_code | ||||||
|            AND cf.<2E><><EFBFBD><EFBFBD> = l_this_year |            AND cf.<2E><><EFBFBD><EFBFBD> = l_this_year | ||||||
|            AND <EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD><EFBFBD><EFBFBD> = a_department_code; |            AND cf.<2E>·<EFBFBD> = l_this_month; | ||||||
|      |      | ||||||
|         --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |         --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|         SELECT decode(SUM(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>), |         SELECT decode(nvl(SUM(xb.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>), | ||||||
|                       0, |  | ||||||
|                       0, |  | ||||||
|                       round(SUM(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>) / SUM(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) * 100, |  | ||||||
|                             2)) |  | ||||||
|           INTO a_renewal_rate |  | ||||||
|           FROM <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3> |  | ||||||
|          WHERE <20><><EFBFBD><EFBFBD> = l_department_name; |  | ||||||
|      |  | ||||||
|         --<2D><>ҵ<EFBFBD><D2B5> |  | ||||||
|         SELECT round(nvl(SUM(cf.<2E><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD> + cf.<2E><><EFBFBD><EFBFBD><EFBFBD>ںϱ<DABA><CFB1><EFBFBD>), |  | ||||||
|                           0), |                           0), | ||||||
|                      0) |                       0, | ||||||
|           INTO a_total |                       0, | ||||||
|           FROM <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><EFBFBD><EFBFBD> cf |                       round(SUM(xb.<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>) / SUM(xb.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) * 100, | ||||||
|          WHERE <20><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD> = a_department_code |                             2)) xbl | ||||||
|            AND ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> >= l_firstday |           INTO a_renewal_rate | ||||||
|            AND ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <= SYSDATE; |           FROM <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͳ<EFBFBD><EFBFBD> xb | ||||||
|  |          WHERE xb.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD> = a_caller_code; | ||||||
|      |      | ||||||
|         --ÿ<><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>) / 10000, |                    ROUND(NVL(SUM(CF.<2E><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD> + CF.<2E><><EFBFBD><EFBFBD><EFBFBD>ںϱ<DABA><CFB1><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 <20><EFBFBD><EFBFBD>Ŵ<EFBFBD><EFBFBD><EFBFBD> = a_department_code |              WHERE cf.<2E><>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> = a_caller_code | ||||||
|                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') | ||||||
|                AND ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> < to_date(to_char(SYSDATE, |                AND ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> < TO_DATE(TO_CHAR(SYSDATE, | ||||||
|                                           'yyyy-mm') || '-01 00:00:00', |                                           'yyyy-mm') || '-01 00:00:00', | ||||||
|                                   'yyyy-mm-dd hh24:mi:ss') |                                   'yyyy-mm-dd hh24:mi:ss') | ||||||
|              GROUP BY cf.<2E>·<EFBFBD> |              GROUP BY CF.<2E>·<EFBFBD> | ||||||
|              ORDER BY cf.<2E>·<EFBFBD>; |              ORDER BY CF.<2E>·<EFBFBD>; | ||||||
|     END; |     END; | ||||||
|  |  | ||||||
|     /*******************************************************/ |     /*******************************************************/ | ||||||
|     -- <20><>ϯ<EFBFBD><CFAF><EFBFBD>а<EFBFBD> |     -- <20><>ϯ<EFBFBD><CFAF><EFBFBD>а<EFBFBD> | ||||||
|     PROCEDURE caller_arch_ranking_list |     PROCEDURE CALLER_ARCH_RANKING_LIST | ||||||
|     ( |     ( | ||||||
|         a_department_code        IN VARCHAR2, |         A_DEPARTMENT_CODE        IN VARCHAR2, | ||||||
|         a_year                   IN VARCHAR2, |         A_YEAR                   IN VARCHAR2, | ||||||
|         a_month                  IN VARCHAR2, |         A_MONTH                  IN VARCHAR2, | ||||||
|         a_attaching_ranking_list OUT cur_type, |         A_ATTACHING_RANKING_LIST OUT CUR_TYPE, | ||||||
|         a_renewal_ranking_list   OUT cur_type |         A_RENEWAL_RANKING_LIST   OUT CUR_TYPE | ||||||
|     ) IS |     ) IS | ||||||
|         l_department_name VARCHAR2(100); |         L_DEPARTMENT_NAME VARCHAR2(100); | ||||||
|     BEGIN |     BEGIN | ||||||
|         -- <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |         -- <20><>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|         BEGIN |         BEGIN | ||||||
|             SELECT department_name |             SELECT DEPARTMENT_NAME | ||||||
|               INTO l_department_name |               INTO L_DEPARTMENT_NAME | ||||||
|               FROM idst0.bm_t bm |               FROM IDST0.BM_T BM | ||||||
|              WHERE bm.department_code = a_department_code; |              WHERE BM.DEPARTMENT_CODE = A_DEPARTMENT_CODE; | ||||||
|         EXCEPTION |         EXCEPTION | ||||||
|             -- <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׳<EFBFBD><D7B3>쳣 |             -- <20><><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƣ<EFBFBD>˵<EFBFBD><CBB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>׳<EFBFBD><D7B3>쳣 | ||||||
|             WHEN NO_DATA_FOUND THEN |             WHEN NO_DATA_FOUND THEN | ||||||
|                 raise_application_error(DEPARTMENTCODE_EXCEPTION_CODE, |                 RAISE_APPLICATION_ERROR(DEPARTMENTCODE_EXCEPTION_CODE, | ||||||
|                                         DEPARTMENTCODE_EXCEPTION_MSG); |                                         DEPARTMENTCODE_EXCEPTION_MSG); | ||||||
|              |  | ||||||
|         END; |         END; | ||||||
|      |  | ||||||
|         -- <20><><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD><DABA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD> |         -- <20><><EFBFBD><EFBFBD><EFBFBD>ں<EFBFBD><DABA><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD> | ||||||
|         OPEN a_attaching_ranking_list FOR |         OPEN A_ATTACHING_RANKING_LIST FOR | ||||||
|             SELECT <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, |             SELECT ROWNUM, | ||||||
|                    round(nvl(SUM(<28><><EFBFBD><EFBFBD><EFBFBD>ںϱ<DABA><CFB1><EFBFBD>) / SUM(<28><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>), |                    <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>   AS CALLER_NAME, | ||||||
|                              0) * 100, |                    <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> AS ATTACHING_RATE | ||||||
|  |               FROM (SELECT <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                            ROUND(DECODE(nvl(SUM(<28><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>), | ||||||
|  |                                             0), | ||||||
|  |                                         0, | ||||||
|  |                                         0, | ||||||
|  |                                         (SUM(<28><><EFBFBD><EFBFBD><EFBFBD>ںϱ<DABA><CFB1><EFBFBD>) / SUM(<28><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>)) * 100), | ||||||
|                                  2) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB8> |                                  2) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB8> | ||||||
|                       FROM <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD> |                       FROM <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD> | ||||||
|              WHERE <20>·<EFBFBD> = a_month |                      WHERE <20>·<EFBFBD> = A_MONTH | ||||||
|                AND <20><><EFBFBD><EFBFBD> = a_year |                        AND <20><><EFBFBD><EFBFBD> = A_YEAR | ||||||
|                AND <20><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD> = a_department_code |                        AND <20><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD> = A_DEPARTMENT_CODE | ||||||
|                      GROUP BY <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD> |                      GROUP BY <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD> | ||||||
|             --HAVING <20>·<EFBFBD> = '06<30><36>' |                      ORDER BY <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB8> DESC); | ||||||
|              ORDER BY <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><CDB8> DESC; |  | ||||||
|      |  | ||||||
|         -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD> |         -- <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>а<EFBFBD> | ||||||
|         OPEN a_renewal_ranking_list FOR |         OPEN A_RENEWAL_RANKING_LIST FOR | ||||||
|             SELECT <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>, |             SELECT ROWNUM, | ||||||
|                    round(nvl((SUM(<28><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>) / SUM(<28><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)) * 100, |                    <20><>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> AS CALLER_NAME, | ||||||
|  |                    <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>   AS RENEWAL_RATE | ||||||
|  |               FROM (SELECT <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                            decode(nvl(SUM(xb.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>), | ||||||
|                                       0), |                                       0), | ||||||
|                          2) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> |                                   0, | ||||||
|               FROM <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3> xb |                                   0, | ||||||
|              WHERE xb.<2E><><EFBFBD><EFBFBD> = l_department_name |                                   round(SUM(xb.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>) / SUM(xb.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>) * 100, | ||||||
|  |                                         2)) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |                       FROM <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3> XB | ||||||
|  |                      WHERE XB.<2E><><EFBFBD><EFBFBD> = L_DEPARTMENT_NAME | ||||||
|                      GROUP BY <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD> |                      GROUP BY <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD> | ||||||
|              ORDER BY <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DESC; |                      ORDER BY <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DESC); | ||||||
|     END; |     END; | ||||||
|  |  | ||||||
| BEGIN | BEGIN | ||||||
|     NULL; |     NULL; | ||||||
| END telsale_archievement_pkg; | END TELSALE_ARCHIEVEMENT_PKG; | ||||||
| / | / | ||||||
|   | |||||||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										918
									
								
								code/db/pkg/telsale_pkg_07-26.pck
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										918
									
								
								code/db/pkg/telsale_pkg_07-26.pck
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,918 @@ | |||||||
|  | CREATE OR REPLACE PACKAGE telsale_pkg IS | ||||||
|  |  | ||||||
|  |     -- Author  : WANGWEI-202 | ||||||
|  |     -- Created : 2023/3/10 15:13:34 | ||||||
|  |     -- Purpose : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ŀ<EFBFBD><C4BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɰ<EFBFBD> | ||||||
|  |  | ||||||
|  |     PROCEDURE <20><><EFBFBD>ǻ<EFBFBD><C7BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |     ( | ||||||
|  |         a_start_date IN DATE, | ||||||
|  |         a_end_date   IN DATE | ||||||
|  |     ); | ||||||
|  |  | ||||||
|  |     PROCEDURE gen_<6E><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> | ||||||
|  |     ( | ||||||
|  |         a_start_date IN DATE, | ||||||
|  |         a_end_date   IN DATE | ||||||
|  |     ); | ||||||
|  |  | ||||||
|  |     PROCEDURE <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>; | ||||||
|  |  | ||||||
|  |     PROCEDURE chefei_daily_job; | ||||||
|  |     PROCEDURE xubao_daily_job; | ||||||
|  |  | ||||||
|  | END telsale_pkg; | ||||||
|  | / | ||||||
|  | CREATE OR REPLACE PACKAGE BODY telsale_pkg IS | ||||||
|  |  | ||||||
|  |     PROCEDURE <20><><EFBFBD>ǻ<EFBFBD><C7BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |     ( | ||||||
|  |         a_start_date IN DATE, | ||||||
|  |         a_end_date   IN DATE | ||||||
|  |     ) IS | ||||||
|  |         --l_count INTEGER; --<2D><><EFBFBD>м<EFBFBD>¼<EFBFBD><C2BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |     BEGIN | ||||||
|  |         --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> | ||||||
|  |         gen_<6E><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>(a_start_date, | ||||||
|  |                    a_end_date); | ||||||
|  |      | ||||||
|  |         FOR caller_record IN (SELECT * | ||||||
|  |                                 FROM desktop_archievement_admin.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD>_t) | ||||||
|  |         LOOP | ||||||
|  |             BEGIN | ||||||
|  |                 DELETE desktop_archievement_admin.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD> cf | ||||||
|  |                  WHERE cf.ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = caller_record.ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |                    AND cf.<2E><><EFBFBD><EFBFBD> = caller_record.<2E><><EFBFBD><EFBFBD> | ||||||
|  |                    AND cf.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n = caller_record.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n | ||||||
|  |                    AND cf.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD> = caller_record.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>; | ||||||
|  |             EXCEPTION | ||||||
|  |                 WHEN no_data_found THEN | ||||||
|  |                     dbms_output.put_line(caller_record.ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> || '<27><><EFBFBD>ظ<EFBFBD><D8B8><EFBFBD><EFBFBD><EFBFBD>'); | ||||||
|  |             END; | ||||||
|  |          | ||||||
|  |             INSERT INTO desktop_archievement_admin.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD> | ||||||
|  |             VALUES caller_record; | ||||||
|  |          | ||||||
|  |         END LOOP; | ||||||
|  |      | ||||||
|  |         COMMIT; | ||||||
|  |         /*EXCEPTION | ||||||
|  |         WHEN OTHERS THEN | ||||||
|  |             NULL;*/ | ||||||
|  |     END; | ||||||
|  |  | ||||||
|  |     /**********************************************************************/ | ||||||
|  |  | ||||||
|  |     PROCEDURE gen_<6E><5F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD> | ||||||
|  |     ( | ||||||
|  |         a_start_date IN DATE, | ||||||
|  |         a_end_date   IN DATE | ||||||
|  |     ) IS | ||||||
|  |     BEGIN | ||||||
|  |         desktop_archievement_admin.clean_temp_data; | ||||||
|  |      | ||||||
|  |         INSERT INTO desktop_archievement_admin.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD>_t | ||||||
|  |             WITH aa AS | ||||||
|  |              (SELECT to_char(t.signature_date, | ||||||
|  |                              'yyyy-mm-dd') ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |                      (to_char(T.signature_date, | ||||||
|  |                               'yyyy')) the_year, | ||||||
|  |                      (to_char(T.signature_date, | ||||||
|  |                               'mm')) the_month, | ||||||
|  |                      t.policy_no bdh, | ||||||
|  |                      t.endorsement_no pdh, | ||||||
|  |                      qt.t_cre tid, | ||||||
|  |                      QT.B_CRE BTID, -----<2D><><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD> | ||||||
|  |                      e.inception_date qbsj, | ||||||
|  |                      e.planned_end_date zzsj, | ||||||
|  |                      pt.premium_amount - nvl(pt.tax_amount, | ||||||
|  |                                              0) bf | ||||||
|  |                      --,qt.qdbf - nvl(qt.qdbf_tax_amount,0) bf | ||||||
|  |                     , | ||||||
|  |                      nt.ecompensation_rate * (pt.premium_amount - nvl(pt.tax_amount, | ||||||
|  |                                                                       0)) fxbf, | ||||||
|  |                      z.department_name bm, | ||||||
|  |                      z.department_code bmdm, | ||||||
|  |                      CASE | ||||||
|  |                          WHEN (et.telpartnercode LIKE '%HC%' OR | ||||||
|  |                               zx.workerno IN (SELECT code | ||||||
|  |                                                  FROM datacenter.dc_lsj_zx_hc)) THEN | ||||||
|  |                           '<27><><EFBFBD>ῥ' | ||||||
|  |                          ELSE | ||||||
|  |                           '' | ||||||
|  |                      END <20>Ƿ<EFBFBD><C7B7>ῥ, | ||||||
|  |                      nvl(zx.workerno, | ||||||
|  |                          et.telpartnercode) <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                      (CASE | ||||||
|  |                          WHEN nvl(zx.workerno, | ||||||
|  |                                   et.telpartnercode) = 'DX001' AND | ||||||
|  |                               xx.staff_name LIKE '%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%' THEN | ||||||
|  |                           '<27><>ΰ<EFBFBD><CEB0>' | ||||||
|  |                          WHEN nvl(zx.workerno, | ||||||
|  |                                   et.telpartnercode) = 'DX001' AND | ||||||
|  |                               xx.staff_name NOT LIKE '%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%' THEN | ||||||
|  |                           '<27><><EFBFBD><EFBFBD>' | ||||||
|  |                          ELSE | ||||||
|  |                           to_char(ys.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>) | ||||||
|  |                      END) <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                      YS.<2E>Ŷ<EFBFBD> <20><>ϯ<EFBFBD>Ŷ<EFBFBD>, | ||||||
|  |                      nvl(YS.<2E>Ŷ<EFBFBD>, | ||||||
|  |                          y.section_office_name) <20><><EFBFBD><EFBFBD>N, | ||||||
|  |                      nvl((CASE | ||||||
|  |                              WHEN nvl(zx.workerno, | ||||||
|  |                                       et.telpartnercode) = 'DX001' AND | ||||||
|  |                                   xx.staff_name LIKE '%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%' THEN | ||||||
|  |                               '<27><>ΰ<EFBFBD><CEB0>' | ||||||
|  |                              WHEN nvl(zx.workerno, | ||||||
|  |                                       et.telpartnercode) = 'DX001' AND | ||||||
|  |                                   xx.staff_name NOT LIKE '%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%' THEN | ||||||
|  |                               '<27><><EFBFBD><EFBFBD>' | ||||||
|  |                              ELSE | ||||||
|  |                               to_char(ys.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>) | ||||||
|  |                          END), | ||||||
|  |                          xx.staff_name) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N | ||||||
|  |                 FROM idst0.auto_agreement_request_t t | ||||||
|  |                 LEFT JOIN idst0.auto_agreement_t e | ||||||
|  |                   ON e.policy_no = t.policy_no | ||||||
|  |                 LEFT JOIN idst0.motorised_vehicle_t v | ||||||
|  |                   ON v.policy_no = e.policy_no | ||||||
|  |                 LEFT JOIN idst0.auto_premium_t pt | ||||||
|  |                   ON pt.policy_no = t.policy_no | ||||||
|  |                  AND pt.endorsement_no = t.endorsement_no | ||||||
|  |                 LEFT JOIN ywglxt.w_dxbd_i i | ||||||
|  |                   ON e.policy_no = i.bdh | ||||||
|  |                 LEFT JOIN idst0.rydm_t xx | ||||||
|  |                   ON xx.staff_code = nvl(i.zhjywy, | ||||||
|  |                                          e.operator_code) | ||||||
|  |                 LEFT JOIN idst0.ks_t y | ||||||
|  |                   ON y.section_office_code = nvl(xx.section_office_code, | ||||||
|  |                                                  e.section_office_code) | ||||||
|  |                 LEFT JOIN idst0.bm_t z | ||||||
|  |                   ON z.department_code = nvl(xx.department_code, | ||||||
|  |                                              e.department_code) | ||||||
|  |               --left join datacenter.dc_cx_csteam ct on ct.jbrcode = xx.staff_code | ||||||
|  |                 LEFT JOIN idst0.auto_new_product_info_t nt | ||||||
|  |                   ON nt.policy_no = t.policy_no | ||||||
|  |                  AND nt.endorsement_no = t.endorsement_no | ||||||
|  |               --left join ywglxt.q_auto_agreement_extend_t qe on qe.policy_no = e.policy_no | ||||||
|  |                 LEFT JOIN ywglxt.q_auto_agreement_t qt | ||||||
|  |                   ON qt.policy_no = e.policy_no | ||||||
|  |                 LEFT JOIN datacenter.dc_yangg_qdcode qd | ||||||
|  |                   ON qd.code = e.selling_channel_type | ||||||
|  |                 LEFT JOIN datacenter.dc_tb_jc_c_tag cl | ||||||
|  |                   ON cl.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = e.policy_no | ||||||
|  |                 LEFT JOIN datacenter.dc_yangg_basecode_teams fg | ||||||
|  |                   ON fg.bm = z.department_name | ||||||
|  |                  AND fg.ks = y.section_office_name | ||||||
|  |               --left join idst0.t_sell_policy_autobase_t zx on zx.policy_no=e.policy_no | ||||||
|  |               --left join idst0.auto_agreement_extend_t et on et.policy_no = e.policy_no | ||||||
|  |                 LEFT JOIN idst0.auto_agreement_extend_t et | ||||||
|  |                   ON et.policy_no = e.policy_no | ||||||
|  |                 LEFT JOIN idst0.t_sell_policy_autobase_t zx | ||||||
|  |                   ON zx.policy_no = e.policy_no | ||||||
|  |                 LEFT JOIN datacenter.dc_YZH_ZXYS YS | ||||||
|  |                   ON YS.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD> = nvl(zx.workerno, | ||||||
|  |                                    et.telpartnercode) | ||||||
|  |               --left join v_lsj_dimian dm on dm.vin=v.vin and e.selling_channel_type='25' and dm.MEMO like'%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%' | ||||||
|  |               --left join datacenter.dc_lsj_zx_team zt on zt.name=coalesce(zc.name,zc1.name,bc.name,dm.JBRMC) | ||||||
|  |                WHERE t.signature_date >= to_date('2023-01-01 00:00:00', | ||||||
|  |                                                  'yyyy-mm-dd hh24:mi:ss') | ||||||
|  |                  AND t.signature_date < to_date(to_char(SYSDATE - 1, | ||||||
|  |                                                         'yyyy-mm-dd') || ' 23:59:59', | ||||||
|  |                                                 'yyyy-mm-dd hh24:mi:ss') | ||||||
|  |                     --and t.endorsement_no = '<27><>' | ||||||
|  |                  AND e.policy_status = '1' --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч | ||||||
|  |                  AND qt.tflag = '0' --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD> | ||||||
|  |                  AND qt.usage_xm = '<27><>ͥ<EFBFBD><CDA5><EFBFBD>ó<EFBFBD>' | ||||||
|  |                     --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ᳵ<EFBFBD><E1B3B5>Ħ<EFBFBD>г<EFBFBD><D0B3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |                     --and e.policy_no in ('AXIMC90Y1419B038594J','AXIMC90CTP19B039593R','AXIMC04CTP19B013473X') | ||||||
|  |                  AND e.planned_end_date - e.inception_date >= 360 | ||||||
|  |               --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |               ) | ||||||
|  |             -----<2D><><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD> | ||||||
|  |             , | ||||||
|  |             dd2 AS | ||||||
|  |              (SELECT ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |                      the_year, | ||||||
|  |                      the_month, | ||||||
|  |                      bm, | ||||||
|  |                      bmdm, | ||||||
|  |                      <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                      <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                      <20><>ϯ<EFBFBD>Ŷ<EFBFBD>, | ||||||
|  |                      <20><><EFBFBD><EFBFBD>N, | ||||||
|  |                      <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N, | ||||||
|  |                      CASE | ||||||
|  |                          WHEN pdh = '<27><>' THEN | ||||||
|  |                           tid | ||||||
|  |                      END tid, | ||||||
|  |                      to_number('1') <20>ͻ<EFBFBD><CDBB><EFBFBD>, | ||||||
|  |                      COUNT(DISTINCT CASE | ||||||
|  |                                WHEN pdh = '<27><>' THEN | ||||||
|  |                                 bdh | ||||||
|  |                            END) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |                      SUM(bf) <20><><EFBFBD><EFBFBD> | ||||||
|  |                 FROM (SELECT DISTINCT * | ||||||
|  |                         FROM aa) aa | ||||||
|  |                GROUP BY bm, | ||||||
|  |                         bmdm, | ||||||
|  |                         CASE | ||||||
|  |                             WHEN pdh = '<27><>' THEN | ||||||
|  |                              tid | ||||||
|  |                         END, | ||||||
|  |                         the_year, | ||||||
|  |                         the_month, | ||||||
|  |                         BTID, | ||||||
|  |                         <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                         <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                         <20><>ϯ<EFBFBD>Ŷ<EFBFBD>, | ||||||
|  |                         ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |                         <20><><EFBFBD><EFBFBD>N, | ||||||
|  |                         <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N | ||||||
|  |               UNION | ||||||
|  |               SELECT ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |                      the_year, | ||||||
|  |                      the_month, | ||||||
|  |                      bm, | ||||||
|  |                      bmdm, | ||||||
|  |                      <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                      <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                      <20><>ϯ<EFBFBD>Ŷ<EFBFBD>, | ||||||
|  |                      <20><><EFBFBD><EFBFBD>N, | ||||||
|  |                      <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N, | ||||||
|  |                      CASE | ||||||
|  |                          WHEN btid = tid THEN | ||||||
|  |                           '' | ||||||
|  |                          ELSE | ||||||
|  |                           btid | ||||||
|  |                      END btid, | ||||||
|  |                      to_number('0') <20>ͻ<EFBFBD><CDBB><EFBFBD>, | ||||||
|  |                      to_number('0') <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |                      to_number('0') <20><><EFBFBD><EFBFBD> | ||||||
|  |                 FROM (SELECT DISTINCT * | ||||||
|  |                         FROM aa) aa), | ||||||
|  |             DD AS | ||||||
|  |              (SELECT * | ||||||
|  |                 FROM DD2 | ||||||
|  |                WHERE TID IS NOT NULL) | ||||||
|  |             --select * from dd | ||||||
|  |             , | ||||||
|  |             bb AS | ||||||
|  |              (SELECT DISTINCT q.policy_no bdh, | ||||||
|  |                               q.endorsement_no pdh, | ||||||
|  |                               qna.t_cre tid, | ||||||
|  |                               to_number(to_char(q.signature_date, | ||||||
|  |                                                 'yyyy')) || '<27><>' nf, | ||||||
|  |                               (to_char(q.signature_date, | ||||||
|  |                                        'mm')) mm_f, | ||||||
|  |                               to_char(q.signature_date, | ||||||
|  |                                       'dd') || '<27><>' dd, | ||||||
|  |                               q.signature_date sj, | ||||||
|  |                               round((pt.premium_amount - nvl(pt.taxamount, | ||||||
|  |                                                              0)) * c.rate / 100, | ||||||
|  |                                     2) bf, | ||||||
|  |                               z.department_name bm | ||||||
|  |                 FROM idst0.nonauto_agreement_request_t q | ||||||
|  |                 LEFT JOIN idst0.nonauto_agreement_t e | ||||||
|  |                   ON e.policy_no = q.policy_no | ||||||
|  |                 LEFT JOIN idst0.nonauto_premium_t pt | ||||||
|  |                   ON pt.endorsement_no = q.endorsement_no | ||||||
|  |                  AND pt.policy_no = q.policy_no | ||||||
|  |                 LEFT JOIN idst0.reinsurance_t r | ||||||
|  |                   ON r.reinsurance_policy_no = e.policy_no | ||||||
|  |                 LEFT JOIN idst0.exrate_month_t c | ||||||
|  |                   ON pt.currency_code = c.bzh | ||||||
|  |                  AND to_char(q.signature_date, | ||||||
|  |                              'YYYY') = c.theyear | ||||||
|  |                  AND to_char(q.signature_date, | ||||||
|  |                              'fmmm') = c.themonth | ||||||
|  |                | ||||||
|  |                 LEFT JOIN idst0.rydm_t x | ||||||
|  |                   ON x.staff_code = e.operator_code | ||||||
|  |                 LEFT JOIN idst0.ks_t y | ||||||
|  |                   ON y.section_office_code = x.section_office_code | ||||||
|  |                 LEFT JOIN idst0.bm_t z | ||||||
|  |                   ON z.department_code = x.department_code | ||||||
|  |                 LEFT JOIN ywglxt.q_nonauto_agreement_t qna | ||||||
|  |                   ON qna.policy_no = q.policy_no | ||||||
|  |                 LEFT JOIN datacenter.dc_yangg_gkxzh gk | ||||||
|  |                   ON gk.product_code = e.product_code --<2D><>ɢ<EFBFBD><C9A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |               --left join datacenter.dc_yangg_zbxzh zb on zb.product_code = e.product_code --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |                 LEFT JOIN dd | ||||||
|  |                   ON dd.tid = qna.t_cre | ||||||
|  |                WHERE qna.tflag = '0' | ||||||
|  |                  AND (CASE | ||||||
|  |                          WHEN q.endorsement_no != '<27><>' AND | ||||||
|  |                               round((pt.premium_amount - nvl(pt.taxamount, | ||||||
|  |                                                              0)) * c.rate / 100, | ||||||
|  |                                     2) != 0 THEN | ||||||
|  |                           '<27><>' | ||||||
|  |                      END) IS NULL | ||||||
|  |                     --and q.endorsement_no = '<27><>' | ||||||
|  |                  AND e.policy_status = '1' | ||||||
|  |                  AND gk.product_code IS NOT NULL | ||||||
|  |                  AND (e.product_code LIKE '2%' OR e.product_code LIKE '1106%' --<2D>⽡ --<2D><><EFBFBD><EFBFBD> | ||||||
|  |                      OR e.product_code LIKE '1107%' OR e.product_code LIKE '1108%' OR e.product_code LIKE '1307%' OR e.product_code LIKE '1304A400%' --<2D>Ҳ<EFBFBD> | ||||||
|  |                       | ||||||
|  |                      ) | ||||||
|  |                     --and e.product_code not in ('22KC9800') | ||||||
|  |                  AND q.signature_date >= to_date('2023-01-01 00:00:00', | ||||||
|  |                                                  'yyyy-mm-dd hh24:mi:ss') | ||||||
|  |                  AND q.signature_date < to_date(to_char(SYSDATE - 1, | ||||||
|  |                                                         'yyyy-mm-dd') || ' 23:59:59', | ||||||
|  |                                                 'yyyy-mm-dd hh24:mi:ss') | ||||||
|  |                  AND e.planned_end_date - e.inception_date >= 90 | ||||||
|  |                  AND dd.tid IS NOT NULL | ||||||
|  |               --<2D><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF>) | ||||||
|  |               ) | ||||||
|  |             --SELECT * FROM BB | ||||||
|  |             , | ||||||
|  |             cc AS | ||||||
|  |              (SELECT mm_f, | ||||||
|  |                      tid <20>ں<EFBFBD>֤<EFBFBD><D6A4>, | ||||||
|  |                      COUNT(DISTINCT bdh) <20>ںϱ<DABA><CFB1><EFBFBD>, | ||||||
|  |                      SUM(bf) <20>ںϱ<DABA><CFB1><EFBFBD> | ||||||
|  |                 FROM bb | ||||||
|  |                GROUP BY tid, | ||||||
|  |                         mm_f), | ||||||
|  |             ff AS | ||||||
|  |              (SELECT dd.*, | ||||||
|  |                      cc.* | ||||||
|  |                 FROM dd | ||||||
|  |                 LEFT JOIN cc | ||||||
|  |                   ON cc.<2E>ں<EFBFBD>֤<EFBFBD><D6A4> = dd.tid | ||||||
|  |                  AND cc.mm_f = dd.the_month) --OR cc.<2E>ں<EFBFBD>֤<EFBFBD><D6A4> = dd.btid | ||||||
|  |             --select * from ff | ||||||
|  |             SELECT to_date(ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |                            'yyyy-mm-dd') ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |                    the_year <20><><EFBFBD><EFBFBD>, | ||||||
|  |                    the_month <20>·<EFBFBD>, | ||||||
|  |                    bm <20><><EFBFBD><EFBFBD>, | ||||||
|  |                    bmdm <20><><EFBFBD>Ŵ<EFBFBD><C5B4><EFBFBD>, | ||||||
|  |                    <20><><EFBFBD><EFBFBD>N, | ||||||
|  |                    <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N, | ||||||
|  |                    <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                    <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                    <20><>ϯ<EFBFBD>Ŷ<EFBFBD>, | ||||||
|  |                    nvl(SUM(<28><><EFBFBD><EFBFBD>), | ||||||
|  |                        0) <20><><EFBFBD>ո<EFBFBD><D5B8>˿ͻ<CBBF><CDBB><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |                    nvl(SUM(<28>ںϱ<DABA><CFB1><EFBFBD>), | ||||||
|  |                        0) <20><><EFBFBD><EFBFBD><EFBFBD>ںϱ<DABA><CFB1><EFBFBD> | ||||||
|  |               FROM ff | ||||||
|  |              WHERE to_date(ff.ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |                            'yyyy-mm-dd') >= a_start_date | ||||||
|  |                AND to_date(ff.ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |                            'yyyy-mm-dd') < a_end_date | ||||||
|  |                AND bm IN ('<27><><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD>', | ||||||
|  |                           '<27><><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>˾') | ||||||
|  |              GROUP BY ǩ<><C7A9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |                       the_year, | ||||||
|  |                       the_month, | ||||||
|  |                       bm, | ||||||
|  |                       bmdm, | ||||||
|  |                       <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                       <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                       <20><>ϯ<EFBFBD>Ŷ<EFBFBD>, | ||||||
|  |                       <20><><EFBFBD><EFBFBD>N, | ||||||
|  |                       <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>N | ||||||
|  |              ORDER BY <20><><EFBFBD><EFBFBD>, | ||||||
|  |                       <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>; | ||||||
|  |         COMMIT; | ||||||
|  |     END; | ||||||
|  |  | ||||||
|  |     /**********************************************************************/ | ||||||
|  |  | ||||||
|  |     PROCEDURE <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IS | ||||||
|  |     BEGIN | ||||||
|  |         --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |         desktop_archievement_admin.clean_mensual_renewal; | ||||||
|  |      | ||||||
|  |         --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |         INSERT INTO desktop_archievement_admin.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ͳ<EFBFBD><CDB3> | ||||||
|  |             WITH cc AS | ||||||
|  |              (SELECT pt.policy_no policy_no, | ||||||
|  |                      SUM(pt.premium_amount) premium_amount, | ||||||
|  |                      SUM(pt.tax_amount) tax_amount | ||||||
|  |                 FROM idst0.auto_premium_t pt | ||||||
|  |                GROUP BY pt.policy_no) | ||||||
|  |              | ||||||
|  |             , | ||||||
|  |             bb AS | ||||||
|  |              (SELECT t.policy_no <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |                      (CASE | ||||||
|  |                          WHEN e.product_code LIKE '1102%' AND | ||||||
|  |                               e.product_code NOT LIKE '110224%' AND | ||||||
|  |                               e.product_code != '11026000' THEN | ||||||
|  |                           '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ձ<EFBFBD><D5B1><EFBFBD>' | ||||||
|  |                          WHEN e.product_code LIKE '1101%' OR | ||||||
|  |                               e.product_code LIKE '1301%' OR | ||||||
|  |                               e.product_code LIKE '11110000%' THEN | ||||||
|  |                           '<27>Ʋ<EFBFBD><C6B2><EFBFBD>' | ||||||
|  |                          WHEN e.product_code LIKE '1107%' OR | ||||||
|  |                               e.product_code LIKE '1307%' OR | ||||||
|  |                               e.product_code LIKE '1304A400%' THEN | ||||||
|  |                           '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>' | ||||||
|  |                          WHEN e.product_code LIKE '1106%' OR | ||||||
|  |                               e.product_code LIKE '51015700' THEN | ||||||
|  |                           '<27>Ҳ<EFBFBD><D2B2><EFBFBD>' | ||||||
|  |                          WHEN (e.product_code LIKE '1104%' OR e.product_code LIKE '1204%' OR e.product_code LIKE '13040000%') AND | ||||||
|  |                               e.product_code NOT LIKE '120404%' THEN | ||||||
|  |                           '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>' | ||||||
|  |                          WHEN e.product_code LIKE '1203%' OR | ||||||
|  |                               e.product_code LIKE '1103%' OR | ||||||
|  |                               e.product_code LIKE '120404%' THEN | ||||||
|  |                           '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>' | ||||||
|  |                          WHEN e.product_code LIKE '1305%' THEN | ||||||
|  |                           '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>' | ||||||
|  |                          WHEN e.product_code LIKE '111%' AND | ||||||
|  |                               e.product_code NOT LIKE '11110000%' THEN | ||||||
|  |                           'ũҵ<C5A9><D2B5>' | ||||||
|  |                          WHEN e.product_code LIKE '1109%' OR | ||||||
|  |                               e.product_code LIKE '1309%' THEN | ||||||
|  |                           '<27><>֤<EFBFBD><D6A4><EFBFBD><EFBFBD>' | ||||||
|  |                          WHEN e.product_code LIKE '1312%' THEN | ||||||
|  |                           '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>' | ||||||
|  |                          WHEN e.product_code LIKE '1308%' THEN | ||||||
|  |                           '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>' | ||||||
|  |                          WHEN e.product_code LIKE '23%' THEN | ||||||
|  |                           '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>' | ||||||
|  |                          WHEN e.product_code LIKE '22%' THEN | ||||||
|  |                           '<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>' | ||||||
|  |                          WHEN e.product_code LIKE '110224%' OR | ||||||
|  |                               e.product_code = '11026000' THEN | ||||||
|  |                           '<27><>ǿ<EFBFBD><C7BF>' | ||||||
|  |                          ELSE | ||||||
|  |                           'δ<><CEB4><EFBFBD><EFBFBD>' | ||||||
|  |                      END) AS <20><><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD> | ||||||
|  |                 FROM idst0.auto_agreement_request_t t | ||||||
|  |                 LEFT JOIN idst0.auto_agreement_t e | ||||||
|  |                   ON e.policy_no = t.policy_no) | ||||||
|  |              | ||||||
|  |             , | ||||||
|  |             aa1 AS | ||||||
|  |              (SELECT a.policy_no <20>ɱ<EFBFBD><C9B1><EFBFBD>, | ||||||
|  |                      a.selling_shop_code <20><><EFBFBD>̴<EFBFBD><CCB4><EFBFBD>, | ||||||
|  |                      a.planned_end_date <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>, | ||||||
|  |                      CASE | ||||||
|  |                          WHEN to_number(to_char(a.planned_end_date, | ||||||
|  |                                                 'yyyy')) = '2022' AND | ||||||
|  |                               a.selling_shop_code || a.tel_sale_4s_code = '00GK' THEN | ||||||
|  |                           '<27><><EFBFBD><EFBFBD>רҵ<D7A8><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>' | ||||||
|  |                          WHEN a.planned_end_date > to_date('2023-04-01 00:00:00', | ||||||
|  |                                                            'yyyy-mm-dd hh24:mi:ss') AND | ||||||
|  |                               (a.selling_shop_code || a.tel_sale_4s_code IN ('00EA', | ||||||
|  |                                                                              '00F1', | ||||||
|  |                                                                              '00G9')) THEN | ||||||
|  |                           '<27><><EFBFBD><EFBFBD>רҵ<D7A8><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>' | ||||||
|  |                          ELSE | ||||||
|  |                           nvl(dt.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |                               z.section_office_name) | ||||||
|  |                      END <20><><EFBFBD><EFBFBD>, | ||||||
|  |                      (CASE | ||||||
|  |                          WHEN to_number(to_char(a.planned_end_date, | ||||||
|  |                                                 'yyyy')) = '2023' AND | ||||||
|  |                               nvl(dt.<2E><><EFBFBD><EFBFBD>, | ||||||
|  |                                   y.department_name) NOT LIKE '<27><><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>˾' and<6E><64>cd.memo LIKE '%<25><><EFBFBD><EFBFBD>%' OR | ||||||
|  |                               cd.memo LIKE '%<25><><EFBFBD><EFBFBD>%' <20><>and v.vehicle_brand IN ('<27><>˹<EFBFBD><CBB9>', | ||||||
|  |                                                   'ε<><CEB5>', | ||||||
|  |                                                   '<27><><EFBFBD><EFBFBD>', | ||||||
|  |                                                   'С<><D0A1>', | ||||||
|  |                                                   '<27><><EFBFBD><EFBFBD>', | ||||||
|  |                                                   '<27><><EFBFBD><EFBFBD>', | ||||||
|  |                                                   'AITO', | ||||||
|  |                                                   'ARCFOX<4F><58><EFBFBD><EFBFBD>', | ||||||
|  |                                                   '<27><>˹<EFBFBD><CBB9><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD>', | ||||||
|  |                                                   '<27><>˹<EFBFBD><CBB9>(<28>й<EFBFBD>)') AND | ||||||
|  |                               v.vin NOT IN ('LJ1E6A2UXL7744108', | ||||||
|  |                                             'LW433B10XL1001411', | ||||||
|  |                                             'LJ1E6A3U2L7742089', | ||||||
|  |                                             'L1NSPGHB0MA002652') THEN | ||||||
|  |                           '<27><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>չ<EFBFBD><D5B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŷ<EFBFBD><C5B7><EFBFBD><EFBFBD><EFBFBD>' | ||||||
|  |                          WHEN (CASE | ||||||
|  |                                   WHEN to_number(to_char(a.planned_end_date, | ||||||
|  |                                                          'yyyy')) = '2022' AND | ||||||
|  |                                        a.selling_shop_code || a.tel_sale_4s_code = '00GK' THEN | ||||||
|  |                                    '<27><><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>˾' | ||||||
|  |                                   ELSE | ||||||
|  |                                    nvl(dt.<2E><><EFBFBD><EFBFBD>, | ||||||
|  |                                        y.department_name) | ||||||
|  |                               END) = '<27><><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>˾' THEN | ||||||
|  |                           (CASE | ||||||
|  |                               WHEN to_number(to_char(a.planned_end_date, | ||||||
|  |                                                      'yyyy')) = '2022' AND | ||||||
|  |                                    a.selling_shop_code || a.tel_sale_4s_code = '00GK' THEN | ||||||
|  |                                '<27><><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>˾' | ||||||
|  |                               ELSE | ||||||
|  |                                nvl(dt.<2E><><EFBFBD><EFBFBD>, | ||||||
|  |                                    y.department_name) | ||||||
|  |                           END) | ||||||
|  |                          WHEN <20><>cd.memo LIKE '%<25><><EFBFBD><EFBFBD>%' OR | ||||||
|  |                               cd.memo LIKE '%<25><><EFBFBD><EFBFBD>%' <20><> THEN | ||||||
|  |                           '<27><><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD>' | ||||||
|  |                          WHEN a.planned_end_date > to_date('2023-04-01 00:00:00', | ||||||
|  |                                                            'yyyy-mm-dd hh24:mi:ss') AND | ||||||
|  |                               (a.selling_shop_code || a.tel_sale_4s_code IN ('00EA', | ||||||
|  |                                                                              '00F1', | ||||||
|  |                                                                              '00G9')) THEN | ||||||
|  |                           'ͬ<><CDAC>֧<EFBFBD><D6A7>˾' | ||||||
|  |                          ELSE | ||||||
|  |                           (CASE | ||||||
|  |                               WHEN to_number(to_char(a.planned_end_date, | ||||||
|  |                                                      'yyyy')) = '2022' AND | ||||||
|  |                                    a.selling_shop_code || a.tel_sale_4s_code = '00GK' THEN | ||||||
|  |                                '<27><><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>˾' | ||||||
|  |                               ELSE | ||||||
|  |                                nvl(dt.<2E><><EFBFBD><EFBFBD>, | ||||||
|  |                                    y.department_name) | ||||||
|  |                           END) | ||||||
|  |                      END) <20><><EFBFBD>β<EFBFBD><CEB2><EFBFBD>, | ||||||
|  |                      qa.USAGE_XM ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |                      decode(qa.bd_type, | ||||||
|  |                             '1', | ||||||
|  |                             '<27><><EFBFBD><EFBFBD>ǿ', | ||||||
|  |                             '2', | ||||||
|  |                             '<27><><EFBFBD><EFBFBD>ҵ', | ||||||
|  |                             '3', | ||||||
|  |                             '<27><><EFBFBD>̹<EFBFBD><CCB9><EFBFBD>', | ||||||
|  |                             '<27><><EFBFBD><EFBFBD>') <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |                      (CASE | ||||||
|  |                          WHEN (qa.bd_type = '1' AND nt.ecompensation_rate > 1) THEN | ||||||
|  |                           '<27><>' | ||||||
|  |                      END) <20><>Ԥ<EFBFBD><D4A4>, | ||||||
|  |                      x.staff_name AS <20><><EFBFBD><EFBFBD>, | ||||||
|  |                      bb.<2E><><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>, | ||||||
|  |                      cc.signature_date <20>±<EFBFBD><C2B1><EFBFBD>ǩ<EFBFBD><C7A9>ʱ<EFBFBD><CAB1>, | ||||||
|  |                      (SELECT hmd.<2E>ܿ<EFBFBD><DCBF><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |                         FROM (SELECT DISTINCT * | ||||||
|  |                                 FROM dc_lsj_xb_hmd) hmd | ||||||
|  |                        WHERE hmd.vin = v.vin) <20>ܿ<EFBFBD><DCBF><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |                | ||||||
|  |                 FROM idst0.auto_agreement_t a | ||||||
|  |                 LEFT JOIN bb | ||||||
|  |                   ON bb.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = a.policy_no | ||||||
|  |                 LEFT JOIN ywglxt.w_dxbd_i i | ||||||
|  |                   ON a.policy_no = i.bdh | ||||||
|  |                 LEFT JOIN idst0.motorised_vehicle_t v | ||||||
|  |                   ON a.policy_no = v.policy_no | ||||||
|  |                 LEFT JOIN ywglxt.q_auto_agreement_t qa | ||||||
|  |                   ON qa.policy_no = a.policy_no | ||||||
|  |                | ||||||
|  |                 LEFT JOIN idst0.auto_new_product_info_t nt | ||||||
|  |                   ON nt.policy_no = a.policy_no | ||||||
|  |                  AND nt.endorsement_no = '<27><>' | ||||||
|  |                 LEFT JOIN idst0.rydm_t x | ||||||
|  |                   ON x.staff_code = nvl(upper(i.zhjywy), | ||||||
|  |                                         a.operator_code) | ||||||
|  |                 LEFT JOIN idst0.bm_t y | ||||||
|  |                   ON x.department_code = y.department_code | ||||||
|  |                 LEFT JOIN idst0.ks_t z | ||||||
|  |                   ON x.section_office_code = z.section_office_code | ||||||
|  |                 LEFT JOIN cc pt | ||||||
|  |                   ON pt.policy_no = a.policy_no | ||||||
|  |                 LEFT JOIN (SELECT DISTINCT aa.policy_no, | ||||||
|  |                                           vv.vin, | ||||||
|  |                                           aa.inception_date, | ||||||
|  |                                           t.signature_date, | ||||||
|  |                                           (pt.premium_amount - nvl(pt.tax_amount, | ||||||
|  |                                                                    0)) qdbf, | ||||||
|  |                                           (CASE | ||||||
|  |                                               WHEN aa.inception_date - aa.issue_date >= '30' THEN | ||||||
|  |                                                vv.vin | ||||||
|  |                                           END) if30, | ||||||
|  |                                           bb.<2E><><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD> | ||||||
|  |                             FROM idst0.auto_agreement_t aa | ||||||
|  |                             LEFT JOIN bb | ||||||
|  |                               ON bb.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = aa.policy_no | ||||||
|  |                             LEFT JOIN idst0.motorised_vehicle_t vv | ||||||
|  |                               ON vv.policy_no = aa.policy_no | ||||||
|  |                             LEFT JOIN idst0.auto_agreement_request_t t | ||||||
|  |                               ON t.policy_no = aa.policy_no | ||||||
|  |                              AND t.endorsement_no = '<27><>' | ||||||
|  |                             LEFT JOIN idst0.auto_premium_t pt | ||||||
|  |                               ON pt.policy_no = aa.policy_no | ||||||
|  |                              AND pt.endorsement_no = '<27><>' | ||||||
|  |                            WHERE aa.policy_no = vv.policy_no | ||||||
|  |                              AND aa.policy_status = '1' --and aa.product_code not in ('11022400','11023900','11024000','11024600','11026000') | ||||||
|  |                              AND aa.branch_company_code = '3080100' | ||||||
|  |                              AND (pt.premium_amount - nvl(pt.tax_amount, | ||||||
|  |                                                           0)) > 100 | ||||||
|  |                              AND aa.inception_date >= to_date('2022-12-01 00:00:00', | ||||||
|  |                                                               'yyyy-mm-dd hh24:mi:ss') | ||||||
|  |                              AND aa.inception_date < to_date('2023-11-01 00:00:00', | ||||||
|  |                                                              'yyyy-mm-dd hh24:mi:ss') | ||||||
|  |                              AND aa.branch_company_code = vv.branch_company_code) cc | ||||||
|  |                   ON (cc.vin = v.vin AND cc.<2E><><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD> = bb.<2E><><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>) | ||||||
|  |                  AND cc.inception_date > a.planned_end_date - 30 --ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD>Ʒſ<C6B7>Ϊ30<33><30> | ||||||
|  |                 LEFT JOIN dc_yangg_cx_dianxiaodoudi cd | ||||||
|  |                   ON cd.policy_no = a.policy_no | ||||||
|  |                 LEFT JOIN dc_tb_jc_c_tag dt | ||||||
|  |                   ON dt.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = a.policy_no | ||||||
|  |                 LEFT JOIN idst0.auto_agreement_t aa | ||||||
|  |                   ON aa.policy_no = cc.policy_no | ||||||
|  |                 LEFT JOIN cc pt1 | ||||||
|  |                   ON pt1.policy_no = aa.policy_no | ||||||
|  |                WHERE a.policy_status = '1' | ||||||
|  |                  AND a.planned_end_date - a.inception_date > 270 | ||||||
|  |                  AND a.planned_end_date >= to_date('2023-01-01 00:00:00', | ||||||
|  |                                                    'yyyy-mm-dd hh24:mi:ss') | ||||||
|  |                  AND a.planned_end_date < to_date('2023-10-01 00:00:00', | ||||||
|  |                                                   'yyyy-mm-dd hh24:mi:ss')), | ||||||
|  |             aa2 AS | ||||||
|  |              (SELECT a.policy_no <20>ɱ<EFBFBD><C9B1><EFBFBD>, | ||||||
|  |                      a.selling_shop_code <20><><EFBFBD>̴<EFBFBD><CCB4><EFBFBD>, | ||||||
|  |                      a.planned_end_date <20><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1>, | ||||||
|  |                      CASE | ||||||
|  |                          WHEN to_number(to_char(a.planned_end_date, | ||||||
|  |                                                 'yyyy')) = '2022' AND | ||||||
|  |                               a.selling_shop_code || a.tel_sale_4s_code = '00GK' THEN | ||||||
|  |                           '<27><><EFBFBD><EFBFBD>רҵ<D7A8><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>' | ||||||
|  |                          WHEN a.planned_end_date > to_date('2023-04-01 00:00:00', | ||||||
|  |                                                            'yyyy-mm-dd hh24:mi:ss') AND | ||||||
|  |                               (a.selling_shop_code || a.tel_sale_4s_code IN ('00EA', | ||||||
|  |                                                                              '00F1', | ||||||
|  |                                                                              '00G9')) THEN | ||||||
|  |                           '<27><><EFBFBD><EFBFBD>רҵ<D7A8><D2B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB>' | ||||||
|  |                          ELSE | ||||||
|  |                           nvl(dt.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |                               z.section_office_name) | ||||||
|  |                      END <20><><EFBFBD><EFBFBD>, | ||||||
|  |                      (CASE | ||||||
|  |                          WHEN to_number(to_char(a.planned_end_date, | ||||||
|  |                                                 'yyyy')) = '2023' AND | ||||||
|  |                               nvl(dt.<2E><><EFBFBD><EFBFBD>, | ||||||
|  |                                   y.department_name) NOT LIKE '<27><><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>˾' and<6E><64>cd.memo LIKE '%<25><><EFBFBD><EFBFBD>%' OR | ||||||
|  |                               cd.memo LIKE '%<25><><EFBFBD><EFBFBD>%' <20><>and v.vehicle_brand IN ('<27><>˹<EFBFBD><CBB9>', | ||||||
|  |                                                   'ε<><CEB5>', | ||||||
|  |                                                   '<27><><EFBFBD><EFBFBD>', | ||||||
|  |                                                   'С<><D0A1>', | ||||||
|  |                                                   '<27><><EFBFBD><EFBFBD>', | ||||||
|  |                                                   '<27><><EFBFBD><EFBFBD>', | ||||||
|  |                                                   'AITO', | ||||||
|  |                                                   'ARCFOX<4F><58><EFBFBD><EFBFBD>', | ||||||
|  |                                                   '<27><>˹<EFBFBD><CBB9><EFBFBD><EFBFBD><EFBFBD>й<EFBFBD><D0B9><EFBFBD>', | ||||||
|  |                                                   '<27><>˹<EFBFBD><CBB9>(<28>й<EFBFBD>)') AND | ||||||
|  |                               v.vin NOT IN ('LJ1E6A2UXL7744108', | ||||||
|  |                                             'LW433B10XL1001411', | ||||||
|  |                                             'LJ1E6A3U2L7742089', | ||||||
|  |                                             'L1NSPGHB0MA002652') THEN | ||||||
|  |                           '<27><><EFBFBD><EFBFBD>Դ<EFBFBD><D4B4><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5>չ<EFBFBD><D5B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ŷ<EFBFBD><C5B7><EFBFBD><EFBFBD><EFBFBD>' | ||||||
|  |                          WHEN (CASE | ||||||
|  |                                   WHEN to_number(to_char(a.planned_end_date, | ||||||
|  |                                                          'yyyy')) = '2022' AND | ||||||
|  |                                        a.selling_shop_code || a.tel_sale_4s_code = '00GK' THEN | ||||||
|  |                                    '<27><><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>˾' | ||||||
|  |                                   ELSE | ||||||
|  |                                    nvl(dt.<2E><><EFBFBD><EFBFBD>, | ||||||
|  |                                        y.department_name) | ||||||
|  |                               END) = '<27><><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>˾' THEN | ||||||
|  |                           (CASE | ||||||
|  |                               WHEN to_number(to_char(a.planned_end_date, | ||||||
|  |                                                      'yyyy')) = '2022' AND | ||||||
|  |                                    a.selling_shop_code || a.tel_sale_4s_code = '00GK' THEN | ||||||
|  |                                '<27><><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>˾' | ||||||
|  |                               ELSE | ||||||
|  |                                nvl(dt.<2E><><EFBFBD><EFBFBD>, | ||||||
|  |                                    y.department_name) | ||||||
|  |                           END) | ||||||
|  |                          WHEN <20><>cd.memo LIKE '%<25><><EFBFBD><EFBFBD>%' OR | ||||||
|  |                               cd.memo LIKE '%<25><><EFBFBD><EFBFBD>%' <20><> THEN | ||||||
|  |                           '<27><><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD>' | ||||||
|  |                          WHEN a.planned_end_date > to_date('2023-04-01 00:00:00', | ||||||
|  |                                                            'yyyy-mm-dd hh24:mi:ss') AND | ||||||
|  |                               (a.selling_shop_code || a.tel_sale_4s_code IN ('00EA', | ||||||
|  |                                                                              '00F1', | ||||||
|  |                                                                              '00G9')) THEN | ||||||
|  |                           'ͬ<><CDAC>֧<EFBFBD><D6A7>˾' | ||||||
|  |                          ELSE | ||||||
|  |                           (CASE | ||||||
|  |                               WHEN to_number(to_char(a.planned_end_date, | ||||||
|  |                                                      'yyyy')) = '2022' AND | ||||||
|  |                                    a.selling_shop_code || a.tel_sale_4s_code = '00GK' THEN | ||||||
|  |                                '<27><><EFBFBD><EFBFBD>֧<EFBFBD><D6A7>˾' | ||||||
|  |                               ELSE | ||||||
|  |                                nvl(dt.<2E><><EFBFBD><EFBFBD>, | ||||||
|  |                                    y.department_name) | ||||||
|  |                           END) | ||||||
|  |                      END) <20><><EFBFBD>β<EFBFBD><CEB2><EFBFBD>, | ||||||
|  |                      qa.USAGE_XM ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |                      decode(qa.bd_type, | ||||||
|  |                             '1', | ||||||
|  |                             '<27><><EFBFBD><EFBFBD>ǿ', | ||||||
|  |                             '2', | ||||||
|  |                             '<27><><EFBFBD><EFBFBD>ҵ', | ||||||
|  |                             '3', | ||||||
|  |                             '<27><><EFBFBD>̹<EFBFBD><CCB9><EFBFBD>', | ||||||
|  |                             '<27><><EFBFBD><EFBFBD>') <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|  |                      (CASE | ||||||
|  |                          WHEN (qa.bd_type = '1' AND nt.ecompensation_rate > 1) THEN | ||||||
|  |                           '<27><>' | ||||||
|  |                      END) <20><>Ԥ<EFBFBD><D4A4>, | ||||||
|  |                      x.staff_name AS <20><><EFBFBD><EFBFBD>, | ||||||
|  |                      bb.<2E><><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>, | ||||||
|  |                      cc.signature_date <20>±<EFBFBD><C2B1><EFBFBD>ǩ<EFBFBD><C7A9>ʱ<EFBFBD><CAB1>, | ||||||
|  |                      (SELECT hmd.<2E>ܿ<EFBFBD><DCBF><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |                         FROM (SELECT DISTINCT * | ||||||
|  |                                 FROM dc_lsj_xb_hmd) hmd | ||||||
|  |                        WHERE hmd.vin = v.vin) <20>ܿ<EFBFBD><DCBF><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |                | ||||||
|  |                 FROM idst0.auto_agreement_t a | ||||||
|  |                 LEFT JOIN bb | ||||||
|  |                   ON bb.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = a.policy_no | ||||||
|  |                 LEFT JOIN ywglxt.w_dxbd_i i | ||||||
|  |                   ON a.policy_no = i.bdh | ||||||
|  |                 LEFT JOIN idst0.motorised_vehicle_t v | ||||||
|  |                   ON a.policy_no = v.policy_no | ||||||
|  |                 LEFT JOIN ywglxt.q_auto_agreement_t qa | ||||||
|  |                   ON qa.policy_no = a.policy_no | ||||||
|  |                 LEFT JOIN idst0.auto_new_product_info_t nt | ||||||
|  |                   ON nt.policy_no = a.policy_no | ||||||
|  |                  AND nt.endorsement_no = '<27><>' | ||||||
|  |                 LEFT JOIN idst0.rydm_t x | ||||||
|  |                   ON x.staff_code = nvl(upper(i.zhjywy), | ||||||
|  |                                         a.operator_code) | ||||||
|  |                 LEFT JOIN idst0.bm_t y | ||||||
|  |                   ON x.department_code = y.department_code | ||||||
|  |                 LEFT JOIN idst0.ks_t z | ||||||
|  |                   ON x.section_office_code = z.section_office_code | ||||||
|  |                 LEFT JOIN cc pt | ||||||
|  |                   ON pt.policy_no = a.policy_no | ||||||
|  |                 LEFT JOIN (SELECT DISTINCT aa.policy_no, | ||||||
|  |                                           vv.vin, | ||||||
|  |                                           aa.inception_date, | ||||||
|  |                                           t.signature_date, | ||||||
|  |                                           (pt.premium_amount - nvl(pt.tax_amount, | ||||||
|  |                                                                    0)) qdbf, | ||||||
|  |                                           (CASE | ||||||
|  |                                               WHEN aa.inception_date - aa.issue_date >= '30' THEN | ||||||
|  |                                                vv.vin | ||||||
|  |                                           END) if30, | ||||||
|  |                                           bb.<2E><><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD> | ||||||
|  |                             FROM idst0.auto_agreement_t aa | ||||||
|  |                             LEFT JOIN bb | ||||||
|  |                               ON bb.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = aa.policy_no | ||||||
|  |                             LEFT JOIN idst0.motorised_vehicle_t vv | ||||||
|  |                               ON vv.policy_no = aa.policy_no | ||||||
|  |                             LEFT JOIN idst0.auto_agreement_request_t t | ||||||
|  |                               ON t.policy_no = aa.policy_no | ||||||
|  |                              AND t.endorsement_no = '<27><>' | ||||||
|  |                             LEFT JOIN idst0.auto_premium_t pt | ||||||
|  |                               ON pt.policy_no = aa.policy_no | ||||||
|  |                              AND pt.endorsement_no = '<27><>' | ||||||
|  |                            WHERE aa.policy_no = vv.policy_no | ||||||
|  |                              AND aa.policy_status = '1' --and aa.product_code not in ('11022400','11023900','11024000','11024600','11026000') | ||||||
|  |                              AND aa.branch_company_code = '3080100' | ||||||
|  |                              AND (pt.premium_amount - nvl(pt.tax_amount, | ||||||
|  |                                                           0)) > 100 | ||||||
|  |                              AND aa.inception_date >= to_date('2022-12-01 00:00:00', | ||||||
|  |                                                               'yyyy-mm-dd hh24:mi:ss') | ||||||
|  |                              AND aa.inception_date < to_date('2023-11-01 00:00:00', | ||||||
|  |                                                              'yyyy-mm-dd hh24:mi:ss') | ||||||
|  |                              AND aa.branch_company_code = vv.branch_company_code) cc | ||||||
|  |                   ON (cc.vin = v.vin AND cc.<2E><><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD> = bb.<2E><><EFBFBD>ִ<EFBFBD><D6B4><EFBFBD>) | ||||||
|  |                  AND cc.inception_date > a.planned_end_date - 30 --ʱ<><CAB1><EFBFBD><EFBFBD><EFBFBD>Ʒſ<C6B7>Ϊ30<33><30> | ||||||
|  |                 LEFT JOIN dc_yangg_cx_dianxiaodoudi cd | ||||||
|  |                   ON cd.policy_no = a.policy_no | ||||||
|  |                 LEFT JOIN dc_tb_jc_c_tag dt | ||||||
|  |                   ON dt.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> = a.policy_no | ||||||
|  |                 LEFT JOIN idst0.auto_agreement_t aa | ||||||
|  |                   ON aa.policy_no = cc.policy_no | ||||||
|  |                 LEFT JOIN cc pt1 | ||||||
|  |                   ON pt1.policy_no = aa.policy_no | ||||||
|  |                WHERE a.policy_status = '1' | ||||||
|  |                  AND a.planned_end_date - a.inception_date > 270 | ||||||
|  |                  AND a.planned_end_date >= to_date('2023-10-01 00:00:00', | ||||||
|  |                                                    'yyyy-mm-dd hh24:mi:ss') | ||||||
|  |                  AND a.planned_end_date < to_date('2024-01-01 00:00:00', | ||||||
|  |                                                   'yyyy-mm-dd hh24:mi:ss')) | ||||||
|  |              | ||||||
|  |             , | ||||||
|  |             aa3 AS | ||||||
|  |              (SELECT DISTINCT * | ||||||
|  |                 FROM aa1 | ||||||
|  |               UNION ALL (SELECT DISTINCT * | ||||||
|  |                           FROM aa2)) | ||||||
|  |              | ||||||
|  |             , | ||||||
|  |             AA AS | ||||||
|  |              (SELECT AA3.*, | ||||||
|  |                      nvl<76><6C>zx.workerno, | ||||||
|  |                      et.telpartnercode) <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |             (CASE WHEN nvl<76><6C>zx.workerno, | ||||||
|  |              et.telpartnercode) = | ||||||
|  |              'DX001' AND aa3.<2E><><EFBFBD><EFBFBD> LIKE | ||||||
|  |              '%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%' THEN | ||||||
|  |              '<27><>ΰ<EFBFBD><CEB0>' WHEN nvl<76><6C>zx.workerno, | ||||||
|  |             et.telpartnercode) = | ||||||
|  |              'DX001' AND aa3.<2E><><EFBFBD><EFBFBD> NOT LIKE | ||||||
|  |              '%<25><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>%' THEN | ||||||
|  |              '<27><><EFBFBD><EFBFBD>' ELSE to_char | ||||||
|  |             (ys.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>) END) <20><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |             YS.<2E>Ŷ<EFBFBD> <20><>ϯ<EFBFBD>Ŷ<EFBFBD> FROM AA3 LEFT JOIN idst0.auto_agreement_extend_t et ON et.policy_no = AA3.<2E>ɱ<EFBFBD><C9B1><EFBFBD> LEFT JOIN idst0.t_sell_policy_autobase_t zx ON zx.policy_no = AA3.<2E>ɱ<EFBFBD><C9B1><EFBFBD> LEFT JOIN dc_YZH_ZXYS YS ON YS.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD> = nvl<76><6C>zx.workerno, | ||||||
|  |             et.telpartnercode)) | ||||||
|  |              | ||||||
|  |             , | ||||||
|  |             yxb AS | ||||||
|  |              ( | ||||||
|  |               ---<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |               SELECT aa.<2E><><EFBFBD>β<EFBFBD><CEB2><EFBFBD> <20><><EFBFBD><EFBFBD>, | ||||||
|  |                       aa.<2E><><EFBFBD><EFBFBD>, | ||||||
|  |                       aa.<2E><><EFBFBD><EFBFBD>, | ||||||
|  |                       aa.<2E><>ϯ<EFBFBD>Ŷ<EFBFBD>, | ||||||
|  |                       aa.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                       aa.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                       --(case when a.<2E><>ʶ='<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>'and A.<2E><><EFBFBD>β<EFBFBD><CEB2><EFBFBD>='<27><><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD>'  then '<27><><EFBFBD><EFBFBD>ҵ<EFBFBD><D2B5><EFBFBD><EFBFBD>' else A.<2E><><EFBFBD><EFBFBD>  end)  <20><><EFBFBD><EFBFBD>, | ||||||
|  |                       (CASE | ||||||
|  |                           WHEN COUNT(1) IS NULL THEN | ||||||
|  |                            0 | ||||||
|  |                           ELSE | ||||||
|  |                            COUNT(1) | ||||||
|  |                       END) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD> | ||||||
|  |                 FROM aa | ||||||
|  |                WHERE aa.ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IN ('<27><>ͥ<EFBFBD><CDA5><EFBFBD>ó<EFBFBD>', | ||||||
|  |                                  '<27><>ҵ<EFBFBD>ͳ<EFBFBD>') | ||||||
|  |                  AND aa.<2E><>Ԥ<EFBFBD><D4A4> IS NULL | ||||||
|  |                  AND aa.<2E>ܿ<EFBFBD><DCBF><EFBFBD><EFBFBD><EFBFBD> IS NULL | ||||||
|  |                  AND aa.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IN <20><> '<27><><EFBFBD>̹<EFBFBD><CCB9><EFBFBD>', '<27><><EFBFBD><EFBFBD>ǿ' <20><> | ||||||
|  |                  AND aa.<2E><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> >= to_date(to_char(SYSDATE, | ||||||
|  |                                                 'yyyy-mm') || '-01 00:00:00', | ||||||
|  |                                         'yyyy-mm-dd hh24:mi:ss') | ||||||
|  |                  AND aa.<2E><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> < to_date(to_char(SYSDATE - 1, | ||||||
|  |                                                'yyyy-mm-dd') || ' 23:59:59', | ||||||
|  |                                        'yyyy-mm-dd hh24:mi:ss') | ||||||
|  |                  AND aa.<2E>±<EFBFBD><C2B1><EFBFBD>ǩ<EFBFBD><C7A9>ʱ<EFBFBD><CAB1> <= to_date(to_char(SYSDATE - 1, | ||||||
|  |                                                    'yyyy-mm-dd') || ' 23:59:59', | ||||||
|  |                                            'yyyy-mm-dd hh24:mi:ss') | ||||||
|  |                GROUP BY aa.<2E><><EFBFBD>β<EFBFBD><CEB2><EFBFBD>, | ||||||
|  |                          aa.<2E><><EFBFBD><EFBFBD>, | ||||||
|  |                          aa.<2E><><EFBFBD><EFBFBD>, | ||||||
|  |                          aa.<2E><>ϯ<EFBFBD>Ŷ<EFBFBD>, | ||||||
|  |                          aa.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                          aa.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>) | ||||||
|  |             --<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D>ۼ<EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>-<2D>ۼ<EFBFBD> | ||||||
|  |             , | ||||||
|  |             dqs AS | ||||||
|  |              ( | ||||||
|  |               ---<2D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |               SELECT aa.<2E><><EFBFBD>β<EFBFBD><CEB2><EFBFBD> <20><><EFBFBD><EFBFBD>, | ||||||
|  |                       aa.<2E><><EFBFBD><EFBFBD>, | ||||||
|  |                       aa.<2E><><EFBFBD><EFBFBD>, | ||||||
|  |                       aa.<2E><>ϯ<EFBFBD>Ŷ<EFBFBD>, | ||||||
|  |                       aa.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                       aa.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                       (CASE | ||||||
|  |                           WHEN COUNT(1) IS NULL THEN | ||||||
|  |                            0 | ||||||
|  |                           ELSE | ||||||
|  |                            COUNT(1) | ||||||
|  |                       END) <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |                 FROM aa | ||||||
|  |                WHERE aa.ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IN ('<27><>ͥ<EFBFBD><CDA5><EFBFBD>ó<EFBFBD>', | ||||||
|  |                                  '<27><>ҵ<EFBFBD>ͳ<EFBFBD>') | ||||||
|  |                  AND aa.<2E><>Ԥ<EFBFBD><D4A4> IS NULL | ||||||
|  |                  AND aa.<2E>ܿ<EFBFBD><DCBF><EFBFBD><EFBFBD><EFBFBD> IS NULL | ||||||
|  |                  AND aa.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> IN <20><> '<27><><EFBFBD>̹<EFBFBD><CCB9><EFBFBD>', '<27><><EFBFBD><EFBFBD>ǿ' <20><> | ||||||
|  |                  AND aa.<2E><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> >= to_date(to_char(SYSDATE, | ||||||
|  |                                                 'yyyy-mm') || '-01 00:00:00', | ||||||
|  |                                         'yyyy-mm-dd hh24:mi:ss') | ||||||
|  |                  AND aa.<2E><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> < to_date(to_char(SYSDATE - 1, | ||||||
|  |                                                'yyyy-mm-dd') || ' 23:59:59', | ||||||
|  |                                        'yyyy-mm-dd hh24:mi:ss') | ||||||
|  |                GROUP BY aa.<2E><><EFBFBD>β<EFBFBD><CEB2><EFBFBD>, | ||||||
|  |                          aa.<2E><><EFBFBD><EFBFBD>, | ||||||
|  |                          aa.<2E><><EFBFBD><EFBFBD>, | ||||||
|  |                          aa.<2E><>ϯ<EFBFBD>Ŷ<EFBFBD>, | ||||||
|  |                          aa.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                          aa.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>) | ||||||
|  |             SELECT dqs.<2E><><EFBFBD><EFBFBD>, | ||||||
|  |                    dqs.<2E><><EFBFBD><EFBFBD>, | ||||||
|  |                    dqs.<2E><><EFBFBD><EFBFBD>, | ||||||
|  |                    dqs.<2E><>ϯ<EFBFBD>Ŷ<EFBFBD>, | ||||||
|  |                    dqs.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                    dqs.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>, | ||||||
|  |                    yxb.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۼ<EFBFBD>, | ||||||
|  |                    dqs.<2E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|  |               FROM yxb, | ||||||
|  |                    dqs --,sdqs,syxs,cyxs,cdqs | ||||||
|  |              WHERE dqs.<2E><><EFBFBD><EFBFBD> = yxb.<2E><><EFBFBD><EFBFBD> | ||||||
|  |                AND dqs.<2E><><EFBFBD><EFBFBD> = yxb.<2E><><EFBFBD><EFBFBD> | ||||||
|  |                AND dqs.<2E><><EFBFBD><EFBFBD> = yxb.<2E><><EFBFBD><EFBFBD> | ||||||
|  |                AND dqs.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD> = yxb.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD> | ||||||
|  |                AND dqs.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD> = yxb.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>; | ||||||
|  |         COMMIT; | ||||||
|  |     END; | ||||||
|  |  | ||||||
|  |     PROCEDURE chefei_daily_job IS | ||||||
|  |     BEGIN | ||||||
|  |         <20><><EFBFBD>ǻ<EFBFBD><C7BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>(SYSDATE - 3, | ||||||
|  |                SYSDATE); | ||||||
|  |     END; | ||||||
|  |  | ||||||
|  |     PROCEDURE xubao_daily_job IS | ||||||
|  |     BEGIN | ||||||
|  |         <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>; | ||||||
|  |     END; | ||||||
|  |  | ||||||
|  | BEGIN | ||||||
|  |     NULL; | ||||||
|  | END telsale_pkg; | ||||||
|  | / | ||||||
| @@ -1,18 +1,18 @@ | |||||||
| drop table <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><EFBFBD><EFBFBD>_T; | drop table 车非每日保费_T; | ||||||
| create global temporary table <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><EFBFBD><EFBFBD>_T | create global temporary table 车非每日保费_T | ||||||
| ( | ( | ||||||
|   ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>     DATE not null, |   签单日期     DATE not null, | ||||||
|   <EFBFBD>·<EFBFBD>       VARCHAR2(10) not null, |   月份       VARCHAR2(10) not null, | ||||||
|   <EFBFBD><EFBFBD><EFBFBD><EFBFBD>       VARCHAR2(100) not null, |   部门       VARCHAR2(100) not null, | ||||||
|   <EFBFBD><EFBFBD><EFBFBD>Ŵ<EFBFBD><EFBFBD><EFBFBD>   varchar2(100) not null, |   部门代码   varchar2(100) not null, | ||||||
|   <EFBFBD><EFBFBD><EFBFBD><EFBFBD>n      VARCHAR2(100) not null, |   科室n      VARCHAR2(100) not null, | ||||||
|   <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>n     VARCHAR2(100), |   经办人n     VARCHAR2(100), | ||||||
|   <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>     VARCHAR2(20), |   坐席工号     VARCHAR2(20), | ||||||
|   <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>     VARCHAR2(30), |   坐席名称     VARCHAR2(30), | ||||||
|   <EFBFBD><EFBFBD>ϯ<EFBFBD>Ŷ<EFBFBD>     VARCHAR2(100), |   坐席团队     VARCHAR2(100), | ||||||
|   <EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><EFBFBD>˿ͻ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> NUMBER(16,2), |   车险个人客户保费 NUMBER(16,2), | ||||||
|   <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ںϱ<EFBFBD><EFBFBD><EFBFBD>   NUMBER(16,2) |   车非融合保费   NUMBER(16,2) | ||||||
| ) | ) | ||||||
| on commit preserve rows; | on commit preserve rows; | ||||||
| -- Grant/Revoke object privileges  | -- Grant/Revoke object privileges  | ||||||
| grant select, insert, delete, alter on <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><EFBFBD><EFBFBD>_T to DATACENTER; | grant select, insert, delete, alter on 车非每日保费_T to DATACENTER; | ||||||
|   | |||||||
| @@ -1,5 +1,5 @@ | |||||||
| INSERT INTO desktop_archievement_admin.<EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><EFBFBD><EFBFBD> | --INSERT INTO desktop_archievement_admin.<EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><EFBFBD><EFBFBD> | ||||||
|     WITH aa AS | WITH aa AS | ||||||
|  (SELECT to_char(t.signature_date, |  (SELECT to_char(t.signature_date, | ||||||
|                  'yyyy-mm-dd') ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, |                  'yyyy-mm-dd') ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|          (to_char(T.signature_date, |          (to_char(T.signature_date, | ||||||
| @@ -21,8 +21,7 @@ INSERT INTO desktop_archievement_admin. | |||||||
|          z.department_name bm, |          z.department_name bm, | ||||||
|          z.department_code bmdm, |          z.department_code bmdm, | ||||||
|          CASE |          CASE | ||||||
|                  WHEN (et.telpartnercode LIKE '%HC%' OR |              WHEN (et.telpartnercode LIKE '%HC%' OR zx.workerno IN (SELECT code | ||||||
|                       zx.workerno IN (SELECT code |  | ||||||
|                                                                       FROM datacenter.dc_lsj_zx_hc)) THEN |                                                                       FROM datacenter.dc_lsj_zx_hc)) THEN | ||||||
|               '<EFBFBD><EFBFBD><EFBFBD>ῥ' |               '<EFBFBD><EFBFBD><EFBFBD>ῥ' | ||||||
|              ELSE |              ELSE | ||||||
| @@ -116,9 +115,9 @@ INSERT INTO desktop_archievement_admin. | |||||||
|      AND e.planned_end_date - e.inception_date >= 360 |      AND e.planned_end_date - e.inception_date >= 360 | ||||||
|   --<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><EFBFBD><EFBFBD> | ||||||
|   ) |   ) | ||||||
|     -----<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD> | -----<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֶ<EFBFBD> | ||||||
|     , | , | ||||||
|     dd2 AS | dd2 AS | ||||||
|  (SELECT ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, |  (SELECT ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|          the_year, |          the_year, | ||||||
|          the_month, |          the_month, | ||||||
| @@ -178,13 +177,13 @@ INSERT INTO desktop_archievement_admin. | |||||||
|          to_number('0') <EFBFBD><EFBFBD><EFBFBD><EFBFBD> |          to_number('0') <EFBFBD><EFBFBD><EFBFBD><EFBFBD> | ||||||
|     FROM (SELECT DISTINCT * |     FROM (SELECT DISTINCT * | ||||||
|             FROM aa) aa), |             FROM aa) aa), | ||||||
|     DD AS | DD AS | ||||||
|  (SELECT * |  (SELECT * | ||||||
|     FROM DD2 |     FROM DD2 | ||||||
|    WHERE TID IS NOT NULL) |    WHERE TID IS NOT NULL) | ||||||
|     --select * from dd | --select * from dd | ||||||
|     , | , | ||||||
|     bb AS | bb AS | ||||||
|  (SELECT DISTINCT q.policy_no bdh, |  (SELECT DISTINCT q.policy_no bdh, | ||||||
|                   q.endorsement_no pdh, |                   q.endorsement_no pdh, | ||||||
|                   qna.t_cre tid, |                   qna.t_cre tid, | ||||||
| @@ -252,9 +251,9 @@ INSERT INTO desktop_archievement_admin. | |||||||
|      AND dd.tid IS NOT NULL |      AND dd.tid IS NOT NULL | ||||||
|   --<EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><EFBFBD>˿ͻ<EFBFBD>) |   --<EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><EFBFBD>˿ͻ<EFBFBD>) | ||||||
|   ) |   ) | ||||||
|     --SELECT * FROM BB | --SELECT * FROM BB | ||||||
|     , | , | ||||||
|     cc AS | cc AS | ||||||
|  (SELECT mm_f, |  (SELECT mm_f, | ||||||
|          tid <EFBFBD>ں<EFBFBD>֤<EFBFBD><EFBFBD>, |          tid <EFBFBD>ں<EFBFBD>֤<EFBFBD><EFBFBD>, | ||||||
|          COUNT(DISTINCT bdh) <EFBFBD>ںϱ<EFBFBD><EFBFBD><EFBFBD>, |          COUNT(DISTINCT bdh) <EFBFBD>ںϱ<EFBFBD><EFBFBD><EFBFBD>, | ||||||
| @@ -262,15 +261,15 @@ INSERT INTO desktop_archievement_admin. | |||||||
|     FROM bb |     FROM bb | ||||||
|    GROUP BY tid, |    GROUP BY tid, | ||||||
|             mm_f), |             mm_f), | ||||||
|     ff AS | ff AS | ||||||
|  (SELECT dd.*, |  (SELECT dd.*, | ||||||
|          cc.* |          cc.* | ||||||
|     FROM dd |     FROM dd | ||||||
|     LEFT JOIN cc |     LEFT JOIN cc | ||||||
|       ON cc.<EFBFBD>ں<EFBFBD>֤<EFBFBD><EFBFBD> = dd.tid |       ON cc.<EFBFBD>ں<EFBFBD>֤<EFBFBD><EFBFBD> = dd.tid | ||||||
|      AND cc.mm_f = dd.the_month) --OR cc.<EFBFBD>ں<EFBFBD>֤<EFBFBD><EFBFBD> = dd.btid |      AND cc.mm_f = dd.the_month) --OR cc.<EFBFBD>ں<EFBFBD>֤<EFBFBD><EFBFBD> = dd.btid | ||||||
|     --select * from ff | --select * from ff | ||||||
|     SELECT to_date(ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | SELECT to_date(ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|                'yyyy-mm-dd') ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, |                'yyyy-mm-dd') ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|        the_year <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, |        the_year <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|        the_month <EFBFBD>·<EFBFBD>, |        the_month <EFBFBD>·<EFBFBD>, | ||||||
| @@ -287,9 +286,9 @@ INSERT INTO desktop_archievement_admin. | |||||||
|            0) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ںϱ<EFBFBD><EFBFBD><EFBFBD> |            0) <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ںϱ<EFBFBD><EFBFBD><EFBFBD> | ||||||
|   FROM ff |   FROM ff | ||||||
|  WHERE to_date(ff.ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, |  WHERE to_date(ff.ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|                    'yyyy-mm-dd') >= DATE '2023-01-01' |                'yyyy-mm-dd') >= DATE '2023-06-01' | ||||||
|    AND to_date(ff.ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, |    AND to_date(ff.ǩ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|                    'yyyy-mm-dd') <= SYSDATE |                'yyyy-mm-dd') < DATE '2023-07-01' | ||||||
|    AND bm IN ('<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>', |    AND bm IN ('<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ҵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>', | ||||||
|               '<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>, | ||||||
| @@ -305,5 +304,7 @@ INSERT INTO desktop_archievement_admin. | |||||||
|  ORDER BY <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, |  ORDER BY <EFBFBD><EFBFBD><EFBFBD><EFBFBD>, | ||||||
|           <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>; |           <EFBFBD><EFBFBD>ϯ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>; | ||||||
|  |  | ||||||
|  | /* | ||||||
| SELECT * | SELECT * | ||||||
|   FROM desktop_archievement_admin.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD>; |   FROM desktop_archievement_admin.<2E><>ϯ<EFBFBD><CFAF><EFBFBD><EFBFBD>ÿ<EFBFBD>ձ<EFBFBD><D5B1><EFBFBD>; | ||||||
|  |   */ | ||||||
|   | |||||||
| @@ -67,25 +67,28 @@ module.exports = { | |||||||
|                     js: "espree", |                     js: "espree", | ||||||
|                     "<template>": "espree", |                     "<template>": "espree", | ||||||
|                 }, |                 }, | ||||||
|  |                 // project: "./tsconfig.json", | ||||||
|  |                 extraFileExtensions: [".vue",], | ||||||
|             }, |             }, | ||||||
|             plugins: ["eslint-plugin-vue",], |             plugins: ["eslint-plugin-vue",], | ||||||
|             extends: [ |             extends: [ | ||||||
|                 "plugin:vue/vue3-essential", |                 "plugin:vue/vue3-essential", | ||||||
|                 "plugin:vue/recommended", |                 "plugin:vue/recommended", | ||||||
|                 "eslint:recommended", |                 "eslint:recommended", | ||||||
|                 "standard-with-typescript", |                 // "standard-with-typescript",  | ||||||
|                 "plugin:@typescript-eslint/eslint-recommended", |                 "plugin:@typescript-eslint/eslint-recommended", | ||||||
|                 "plugin:@typescript-eslint/recommended", |                 "plugin:@typescript-eslint/recommended", | ||||||
|             ], |             ], | ||||||
|             rules: { |             rules: { | ||||||
|                 indent: ["warn", 4,], |                 indent: ["warn", 4,], | ||||||
|  |                 "no-trailing-spaces": ["error", {"ignoreComments": true,},], | ||||||
|                 // 圆括号中的空格,为空不加空格,紧跟花括号、方括号、圆括号时也不加入空格 |                 // 圆括号中的空格,为空不加空格,紧跟花括号、方括号、圆括号时也不加入空格 | ||||||
|                 "space-in-parens": ["error", "always", { exceptions: ["{}", "[]", "()", "empty",], },], |                 "space-in-parens": ["error", "always", { exceptions: ["{}", "[]", "()", "empty",], },], | ||||||
|                 "no-console": process.env.NODE_ENV === "production" ? "warn" : "off", |                 "no-console": process.env.NODE_ENV === "production" ? "warn" : "off", | ||||||
|                 "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off", |                 "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off", | ||||||
|                 "no-unused-vars": "warn", |                 "no-unused-vars": "warn", | ||||||
|                 semi: ["error", "always",], // 控制行尾部分号 |                 "semi-spacing": ["error", {"before": false, "after": true,},], // 控制行尾部分号 | ||||||
|                 quotes: ["error", "double",], |                 "quotes": ["error", "double",], | ||||||
|                 "comma-dangle": ["error", { |                 "comma-dangle": ["error", { | ||||||
|                     arrays: "always", |                     arrays: "always", | ||||||
|                     objects: "always", |                     objects: "always", | ||||||
| @@ -149,10 +152,12 @@ module.exports = { | |||||||
|                 "plugin:@typescript-eslint/recommended", |                 "plugin:@typescript-eslint/recommended", | ||||||
|             ], |             ], | ||||||
|             rules: { |             rules: { | ||||||
|  |                 "no-trailing-spaces": ["error", {"ignoreComments": true,},], | ||||||
|                 // 圆括号中的空格,为空不加空格,紧跟花括号、方括号、圆括号时也不加入空格 |                 // 圆括号中的空格,为空不加空格,紧跟花括号、方括号、圆括号时也不加入空格 | ||||||
|                 "space-in-parens": ["error", "always", { exceptions: ["{}", "[]", "()", "empty",], },], |                 "space-in-parens": ["error", "always", { exceptions: ["{}", "[]", "()", "empty",], },], | ||||||
|                 "no-console": process.env.NODE_ENV === "production" ? "warn" : "off", |                 "no-console": process.env.NODE_ENV === "production" ? "warn" : "off", | ||||||
|                 "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off", |                 "no-debugger": process.env.NODE_ENV === "production" ? "warn" : "off", | ||||||
|  |                 "@typescript-eslint/no-explicit-any": "warn", | ||||||
|                 "@typescript-eslint/indent": ["error", 4,], |                 "@typescript-eslint/indent": ["error", 4,], | ||||||
|                 "@typescript-eslint/no-extra-semi": "off", |                 "@typescript-eslint/no-extra-semi": "off", | ||||||
|                 "@typescript-eslint/no-inferrable-types": "off", |                 "@typescript-eslint/no-inferrable-types": "off", | ||||||
| @@ -188,6 +193,7 @@ module.exports = { | |||||||
|                 "prefer-const": "warn", |                 "prefer-const": "warn", | ||||||
|                 "spaced-comment": "error", |                 "spaced-comment": "error", | ||||||
|                 "space-before-function-paren": "off", |                 "space-before-function-paren": "off", | ||||||
|  |                 "semi-spacing": ["error", {"before": false, "after": true,},], | ||||||
|             }, |             }, | ||||||
|         }, |         }, | ||||||
|     ], |     ], | ||||||
|   | |||||||
							
								
								
									
										1151
									
								
								code/web/task_schedule/package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										1151
									
								
								code/web/task_schedule/package-lock.json
									
									
									
										generated
									
									
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @@ -9,31 +9,32 @@ | |||||||
|         "preview": "vite preview" |         "preview": "vite preview" | ||||||
|     }, |     }, | ||||||
|     "dependencies": { |     "dependencies": { | ||||||
|         "@babel/eslint-parser": "^7.22.7", |         "@babel/eslint-parser": "^7.22.11", | ||||||
|         "@element-plus/icons-vue": "^2.1.0", |         "@element-plus/icons-vue": "^2.1.0", | ||||||
|         "axios": "^1.4.0", |         "@rushstack/eslint-patch": "^1.3.3", | ||||||
|  |         "@vue/eslint-config-typescript": "^11.0.3", | ||||||
|         "babel": "^6.23.0", |         "babel": "^6.23.0", | ||||||
|         "echarts": "^5.4.2", |         "echarts": "^5.4.3", | ||||||
|         "element-plus": "^2.3.7", |         "element-plus": "^2.3.12", | ||||||
|         "moment": "^2.29.4", |         "moment": "^2.29.4", | ||||||
|         "sass-loader": "^13.3.2", |         "sass-loader": "^13.3.2", | ||||||
|  |         "ts-node": "^10.9.1", | ||||||
|         "vue": "^3.3.4", |         "vue": "^3.3.4", | ||||||
|         "vue-router": "^4.2.4", |         "vue-router": "^4.2.4", | ||||||
|         "vuex": "^4.1.0" |         "vuex": "^4.1.0" | ||||||
|     }, |     }, | ||||||
|     "devDependencies": { |     "devDependencies": { | ||||||
|         "@babel/eslint-parser": "^7.22.7", |         "@babel/eslint-parser": "^7.22.11", | ||||||
|         "@typescript-eslint/eslint-plugin": "^5.61.0", |         "@typescript-eslint/eslint-plugin": "^6.5.0", | ||||||
|         "@typescript-eslint/parser": "^5.61.0", |         "@vitejs/plugin-vue": "^4.3.3", | ||||||
|         "@vitejs/plugin-vue": "^4.2.3", |  | ||||||
|         "@vue/cli-plugin-eslint": "^5.0.8", |         "@vue/cli-plugin-eslint": "^5.0.8", | ||||||
|  |         "axios": "~1.5.0", | ||||||
|         "eslint-config-recommended": "^4.1.0", |         "eslint-config-recommended": "^4.1.0", | ||||||
|         "eslint-config-standard-with-typescript": "^36.0.0", |         "eslint-config-standard-with-typescript": "^39.0.0", | ||||||
|         "eslint-plugin-vue": "^9.15.1", |         "eslint-plugin-vue": "^9.17.0", | ||||||
|         "node-sass": "^9.0.0", |         "node-sass": "^9.0.0", | ||||||
|         "sass": "^1.63.6", |         "sass": "^1.66.1", | ||||||
|         "style-loader": "^3.3.3", |         "style-loader": "^3.3.3", | ||||||
|         "typescript": "^5.1.6", |  | ||||||
|         "vue-eslint-parser": "^9.3.1" |         "vue-eslint-parser": "^9.3.1" | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
| @@ -2,7 +2,7 @@ | |||||||
|  * @Author: Kane |  * @Author: Kane | ||||||
|  * @Date: 2023-02-15 09:25:52 |  * @Date: 2023-02-15 09:25:52 | ||||||
|  * @LastEditors: Kane |  * @LastEditors: Kane | ||||||
|  * @LastEditTime: 2023-03-17 14:31:14 |  * @LastEditTime: 2023-08-25 10:53:30 | ||||||
|  * @FilePath: /task_schedule/src/App.vue |  * @FilePath: /task_schedule/src/App.vue | ||||||
|  * @Description: |  * @Description: | ||||||
|  * 应用的框架: |  * 应用的框架: | ||||||
| @@ -17,7 +17,7 @@ | |||||||
| </template> | </template> | ||||||
|  |  | ||||||
| <script lang="ts"> | <script lang="ts"> | ||||||
| import zhCn from "element-plus/lib/locale/lang/zh-cn"; // element-plus语言组件 | import zhCn from "element-plus/es/locale/lang/zh-cn"; // element-plus语言组件 | ||||||
|  |  | ||||||
| export default { | export default { | ||||||
|     name: "App", |     name: "App", | ||||||
|   | |||||||
| @@ -29,11 +29,13 @@ export default { | |||||||
|     setup( props ) |     setup( props ) | ||||||
|     { |     { | ||||||
|         const ui = reactive({ |         const ui = reactive({ | ||||||
|  |             mensualList:[], | ||||||
|         }); |         }); | ||||||
|  |  | ||||||
|         // 设置图表 |         // 设置图表 | ||||||
|         const initCharts = () => |         const initCharts = () => | ||||||
|         { |         { | ||||||
|  |             console.log( "每月业绩", props.chartData ); | ||||||
|             const chartDom = document.getElementById( "chartWrapper" ); |             const chartDom = document.getElementById( "chartWrapper" ); | ||||||
|             const myChart = echarts.init( chartDom as HTMLDivElement ); |             const myChart = echarts.init( chartDom as HTMLDivElement ); | ||||||
|             const option = { |             const option = { | ||||||
|   | |||||||
| @@ -8,6 +8,8 @@ | |||||||
|  * Copyright (c) ${2022} by Kane, All Rights Reserved. |  * Copyright (c) ${2022} by Kane, All Rights Reserved. | ||||||
|  */ |  */ | ||||||
|  |  | ||||||
| import { testRankingListRequest } from "./testRankingListRequest.js"; | // import { testRankingListRequest } from "./testRankingListRequest.js"; | ||||||
|  |  | ||||||
| testRankingListRequest(); | // testRankingListRequest(); | ||||||
|  |  | ||||||
|  | console.log( "test" ); | ||||||
|   | |||||||
| @@ -14,13 +14,12 @@ | |||||||
|         "target": "ESNext", |         "target": "ESNext", | ||||||
|         "module": "ESNext", |         "module": "ESNext", | ||||||
|         // "module": "CommonJS", |         // "module": "CommonJS", | ||||||
|         // "moduleResolution": "node", |  | ||||||
|         "moduleResolution": "node", |         "moduleResolution": "node", | ||||||
|         "strict": true, |         "strict": true, | ||||||
|         "jsx": "preserve", |         "jsx": "preserve", | ||||||
|         "sourceMap": true, |         "sourceMap": true, | ||||||
|         "resolveJsonModule": true, |         "resolveJsonModule": true, | ||||||
|         "esModuleInterop": false, |         "esModuleInterop": true, | ||||||
|         "baseUrl": "./", // paths 路径解析起点 |         "baseUrl": "./", // paths 路径解析起点 | ||||||
|         "paths": { // 别名路径设置 |         "paths": { // 别名路径设置 | ||||||
|             "@/*": [ |             "@/*": [ | ||||||
| @@ -46,5 +45,8 @@ | |||||||
|     ], |     ], | ||||||
|     "exclude": [ |     "exclude": [ | ||||||
|         "./node_modules", |         "./node_modules", | ||||||
|     ] |     ], | ||||||
|  |     "ts-node": { | ||||||
|  |         "esm": true | ||||||
|  |     }, | ||||||
| } | } | ||||||
| @@ -12,6 +12,6 @@ interface Department | |||||||
| { | { | ||||||
|     departmentName: string; |     departmentName: string; | ||||||
|     departmentCode: string; |     departmentCode: string; | ||||||
| }; | } | ||||||
|  |  | ||||||
| export { type Department }; | export { type Department }; | ||||||
|   | |||||||
| @@ -13,6 +13,6 @@ interface RankingListItem | |||||||
|     index: number; |     index: number; | ||||||
|     callerName: string; |     callerName: string; | ||||||
|     appraiseValue: string; |     appraiseValue: string; | ||||||
| }; | } | ||||||
|  |  | ||||||
| export { type RankingListItem }; | export { type RankingListItem }; | ||||||
|   | |||||||
| @@ -16,6 +16,6 @@ interface TelSaler | |||||||
|     teamName: string; |     teamName: string; | ||||||
|     departmentCode: string; |     departmentCode: string; | ||||||
|     departmentName: string; |     departmentName: string; | ||||||
| }; | } | ||||||
|  |  | ||||||
| export { type TelSaler }; | export { type TelSaler }; | ||||||
|   | |||||||
| @@ -24,4 +24,6 @@ export const API_URL = { | |||||||
|     // URL_RANKINGLIST: "http://222.76.244.118:11101/desktop_archievement_backend/archievement/query_ranking_list.do", |     // URL_RANKINGLIST: "http://222.76.244.118:11101/desktop_archievement_backend/archievement/query_ranking_list.do", | ||||||
|     URL_RANKINGLIST: "http://10.39.0.41:8081/desktop_archievement_backend/archievement/query_ranking_list.do", |     URL_RANKINGLIST: "http://10.39.0.41:8081/desktop_archievement_backend/archievement/query_ranking_list.do", | ||||||
|  |  | ||||||
|  |     // 坐席业绩查询 | ||||||
|  |     URL_CALLER_ARCHIEVEMENT: "http://10.39.0.41:8081/desktop_archievement_backend/archievement/query_caller_archievement.do", | ||||||
| }; | }; | ||||||
|   | |||||||
| @@ -44,7 +44,7 @@ function saveStaffInfo( stuff: StaffInfo ): void | |||||||
|     const json = JSON.stringify( stuff ); |     const json = JSON.stringify( stuff ); | ||||||
|  |  | ||||||
|     window.localStorage.setItem( STUFF_ITEM, json ); |     window.localStorage.setItem( STUFF_ITEM, json ); | ||||||
| }; | } | ||||||
|  |  | ||||||
| function cleanStaffInfo(): void | function cleanStaffInfo(): void | ||||||
| { | { | ||||||
| @@ -102,7 +102,8 @@ function clearCallerInfo(): void | |||||||
|     window.localStorage.removeItem( CALLER_ITEM ); |     window.localStorage.removeItem( CALLER_ITEM ); | ||||||
| } | } | ||||||
|  |  | ||||||
| export { | export | ||||||
|  | { | ||||||
|     loadStaffInfo, |     loadStaffInfo, | ||||||
|     saveStaffInfo, |     saveStaffInfo, | ||||||
|     cleanStaffInfo, |     cleanStaffInfo, | ||||||
|   | |||||||
| @@ -3,16 +3,17 @@ | |||||||
|  * @Date: 2023-03-17 15:17:44 |  * @Date: 2023-03-17 15:17:44 | ||||||
|  * @LastEditors: Kane |  * @LastEditors: Kane | ||||||
|  * @FilePath: /task_schedule/src/utils/archievement.ts |  * @FilePath: /task_schedule/src/utils/archievement.ts | ||||||
|  * @Description: 请求业绩数据 |  * @Description: 请求业绩数据相关的方法。 | ||||||
|  * |  * | ||||||
|  * 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.js"; | ||||||
| import { API_URL } from "./api/config.js"; | import { API_URL } from "./api/config.js"; | ||||||
| import { type Department } from "@/types/cpicxim/Department.js"; | import { type Department } from "../types/cpicxim/Department.js"; | ||||||
| // import { type AxiosResponse } from "axios"; | import { type TelSaler } from "../types/cpicxim/TelSaler.js"; | ||||||
|  | import { type AxiosResponse } from "axios"; | ||||||
|  |  | ||||||
| interface Archievement | interface DepartmentArchievement // 定义业绩对象的结构 | ||||||
| { | { | ||||||
|     success: boolean; |     success: boolean; | ||||||
|     message: string; |     message: string; | ||||||
| @@ -25,9 +26,26 @@ interface Archievement | |||||||
|     backward_list: string[]; |     backward_list: string[]; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | interface CallerArchievement // 坐席业绩对象 | ||||||
|  | { | ||||||
|  |     success: boolean; | ||||||
|  |     message: string; | ||||||
|  |     total_archievement: number; | ||||||
|  |     mensual_archievement_list: number[]; | ||||||
|  |     insurance_renewal_rate: string; | ||||||
|  |     attaching_rate: string; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | interface MenusalArchievementItem // 每月业绩清单的项目 | ||||||
|  | { | ||||||
|  |     month: number; | ||||||
|  |     premium: string; | ||||||
|  | } | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 获取部门业绩数据,并调用回调函数进行渲染。 |  * 获取部门业绩数据,并调用回调函数进行渲染。 | ||||||
|  * @param render 用于给组件更新数据的回调函数 |  * @param departmentInfo 作为请求参数的部门参数对象 | ||||||
|  |  * @param render 用于给组件更新数据的回调函数,用DepartmentArchievement对象调用; | ||||||
|  */ |  */ | ||||||
| function queryDepartmentArchievement( departmentInfo: Department, render: any ): void | function queryDepartmentArchievement( departmentInfo: Department, render: any ): void | ||||||
| { | { | ||||||
| @@ -38,7 +56,7 @@ function queryDepartmentArchievement( departmentInfo: Department, render: any ): | |||||||
|     }) |     }) | ||||||
|         .then(( response ) => |         .then(( response ) => | ||||||
|         { |         { | ||||||
|             const archievement: Archievement = { |             const archievement: DepartmentArchievement = { | ||||||
|                 success: false, |                 success: false, | ||||||
|                 message: "", |                 message: "", | ||||||
|                 total_archievement: 0, |                 total_archievement: 0, | ||||||
| @@ -54,14 +72,26 @@ function queryDepartmentArchievement( departmentInfo: Department, render: any ): | |||||||
|  |  | ||||||
|             archievement.success = data.success ?? false; |             archievement.success = data.success ?? false; | ||||||
|             archievement.message = data.message ?? ""; |             archievement.message = data.message ?? ""; | ||||||
|             archievement.mensual_archievement_list = data.mensual_archievement_list ?? []; |             archievement.total_archievement = data.total_archievement; | ||||||
|  |             // archievement.mensual_archievement_list = data.mensual_archievement_list ?? []; | ||||||
|  |             archievement.mensual_archievement_list = []; | ||||||
|             archievement.insurance_renewal_rate = data.insurance_renewal_rate ?? "0.0"; |             archievement.insurance_renewal_rate = data.insurance_renewal_rate ?? "0.0"; | ||||||
|             archievement.attaching_rate = data.attaching_rate ?? "0.0"; |             archievement.attaching_rate = data.attaching_rate ?? "0.0"; | ||||||
|             archievement.leading_reward_gainers = data.leading_reward_gainers ?? []; |             archievement.leading_reward_gainers = data.leading_reward_gainers ?? []; | ||||||
|             archievement.advance_reward_gainers = data.advance_reward_gainers ?? []; |             archievement.advance_reward_gainers = data.advance_reward_gainers ?? []; | ||||||
|             archievement.backward_list = data.backward_list ?? []; |             archievement.backward_list = data.backward_list ?? []; | ||||||
|  |  | ||||||
|             render( data ); |             // 转换每月业绩数据,用month排序以后,保留premium。 | ||||||
|  |             data.mensual_archievement_list.sort(( a: any, b: any ) => a.month - b.month ); | ||||||
|  |             data.mensual_archievement_list.forEach(( item: any ) => | ||||||
|  |             { | ||||||
|  |                 archievement.mensual_archievement_list.push( item.premium ); | ||||||
|  |             }); | ||||||
|  |  | ||||||
|  |             console.log( "每月业绩", archievement ); | ||||||
|  |  | ||||||
|  |             // 渲染数据 | ||||||
|  |             render( archievement ); | ||||||
|         }) |         }) | ||||||
|         .catch(( error ) => |         .catch(( error ) => | ||||||
|         { |         { | ||||||
| @@ -69,4 +99,118 @@ function queryDepartmentArchievement( departmentInfo: Department, render: any ): | |||||||
|         }); |         }); | ||||||
| } | } | ||||||
|  |  | ||||||
| export { queryDepartmentArchievement, type Archievement }; | /** | ||||||
|  |  * 查询坐席的业绩,并调用渲染函数. | ||||||
|  |  * 1、请求坐席业绩的数据 | ||||||
|  |  * 2、对每月业绩清单进行检查,如果有缺少则用0代替,检查的结果是12个月的清单,让调用者自己截断; | ||||||
|  |  * 3、将检查后的清单,写入到业绩对象中,只写金额 | ||||||
|  |  * @param callerInfo 坐席的信息参数,用于请求业绩; | ||||||
|  |  * @param render 渲染函数,用业绩对象CallerArchievement作为参数; | ||||||
|  |  */ | ||||||
|  | function queryCallerArchievement( callerInfo: TelSaler, render: any ): void | ||||||
|  | { | ||||||
|  |     const caller = { | ||||||
|  |         callerCode: callerInfo.telSalerCode, | ||||||
|  |         callName: callerInfo.telSalerName, | ||||||
|  |     }; | ||||||
|  |  | ||||||
|  |     // 发送请求 | ||||||
|  |     instance.request({ | ||||||
|  |         method: "post", | ||||||
|  |         url: API_URL.URL_CALLER_ARCHIEVEMENT, | ||||||
|  |         data: caller, | ||||||
|  |     }) | ||||||
|  |         // 请求完成时 | ||||||
|  |         .then(( response: AxiosResponse<any, any> ) => | ||||||
|  |         { | ||||||
|  |             const data = response.data ?? {}; | ||||||
|  |  | ||||||
|  |             const callArchievement: CallerArchievement = { | ||||||
|  |                 success: data.success ?? false, | ||||||
|  |                 message: data.message ?? "", | ||||||
|  |                 total_archievement: data.total_archievement ?? 0, | ||||||
|  |                 mensual_archievement_list: [], | ||||||
|  |                 insurance_renewal_rate: data.insurance_renewal_rate ?? "0.0", | ||||||
|  |                 attaching_rate: data.attaching_rate ?? "0.0", | ||||||
|  |             }; | ||||||
|  |  | ||||||
|  |             // 检查业绩清单有没有缺漏,缺漏的用0补上 | ||||||
|  |             const checkedList = checkMensualArchievement( data.mensual_archievement_list ); | ||||||
|  |  | ||||||
|  |             // 排序一下 | ||||||
|  |             checkedList.sort(( a: MenusalArchievementItem, b: MenusalArchievementItem ): number => | ||||||
|  |             { | ||||||
|  |                 return a.month - b.month; | ||||||
|  |             }); | ||||||
|  |  | ||||||
|  |             // 将排序后的每月业绩写到业绩对象中 | ||||||
|  |             checkedList.forEach(( item: MenusalArchievementItem ): void => | ||||||
|  |             { | ||||||
|  |                 const premium = Number( item.premium ); | ||||||
|  |  | ||||||
|  |                 callArchievement.mensual_archievement_list.push( premium ); | ||||||
|  |             }); | ||||||
|  |  | ||||||
|  |             // 调用渲染函数 | ||||||
|  |             if ( render !== undefined ) | ||||||
|  |             { | ||||||
|  |                 render( callArchievement ); | ||||||
|  |             } | ||||||
|  |  | ||||||
|  |             console.log( `queryCallerArchievement查询结果${data}` ); | ||||||
|  |         }) | ||||||
|  |         // 请求失败 | ||||||
|  |         .catch(( error: any ) => | ||||||
|  |         { | ||||||
|  |             console.log( `queryCallerArchievement:查询坐席${callerInfo.telSalerCode}业绩失败,原因${error}` ); | ||||||
|  |         }); | ||||||
|  | } | ||||||
|  |  | ||||||
|  | /** | ||||||
|  |  * 检查服务器返回的每月业绩数组,检查是否有缺漏,缺少的月份业绩用0代替。 | ||||||
|  |  * 检查的结果是12个月的清单,由调用者自己进行截断。 | ||||||
|  |  * @param mensualArchievementList MenusalArchievementItem类型的数组,为业绩清单 | ||||||
|  |  * @returns 返回MenusalArchievementItem数组,为检查过的清单 | ||||||
|  |  */ | ||||||
|  | function checkMensualArchievement( mensualArchievementList: MenusalArchievementItem[]): MenusalArchievementItem[] | ||||||
|  | { | ||||||
|  |     const checkedList: MenusalArchievementItem[] = []; | ||||||
|  |     const itemMap = new Map(); | ||||||
|  |  | ||||||
|  |     itemMap.set( 1, "0" ); | ||||||
|  |     itemMap.set( 2, "0" ); | ||||||
|  |     itemMap.set( 3, "0" ); | ||||||
|  |     itemMap.set( 4, "0" ); | ||||||
|  |     itemMap.set( 5, "0" ); | ||||||
|  |     itemMap.set( 6, "0" ); | ||||||
|  |     itemMap.set( 7, "0" ); | ||||||
|  |     itemMap.set( 8, "0" ); | ||||||
|  |     itemMap.set( 9, "0" ); | ||||||
|  |     itemMap.set( 10, "0" ); | ||||||
|  |     itemMap.set( 11, "0" ); | ||||||
|  |     itemMap.set( 12, "0" ); | ||||||
|  |  | ||||||
|  |     mensualArchievementList.forEach(( item: MenusalArchievementItem ): void => | ||||||
|  |     { | ||||||
|  |         itemMap.set( item.month, item.premium ); | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     itemMap.forEach(( value, key, map ) => | ||||||
|  |     { | ||||||
|  |         const item: MenusalArchievementItem = { | ||||||
|  |             month: key, | ||||||
|  |             premium: value, | ||||||
|  |         }; | ||||||
|  |  | ||||||
|  |         checkedList.push( item ); | ||||||
|  |     }); | ||||||
|  |  | ||||||
|  |     return checkedList; | ||||||
|  | } | ||||||
|  |  | ||||||
|  | export { | ||||||
|  |     queryDepartmentArchievement, | ||||||
|  |     queryCallerArchievement, | ||||||
|  |     type DepartmentArchievement, | ||||||
|  |     type CallerArchievement | ||||||
|  | }; | ||||||
|   | |||||||
| @@ -19,7 +19,7 @@ interface RankingListRequest | |||||||
|     departmentCode: string; |     departmentCode: string; | ||||||
|     year: string; |     year: string; | ||||||
|     month: string; |     month: string; | ||||||
| }; | } | ||||||
|  |  | ||||||
| interface RankingListResponse | interface RankingListResponse | ||||||
| { | { | ||||||
| @@ -30,7 +30,7 @@ interface RankingListResponse | |||||||
|     month: string; |     month: string; | ||||||
|     attachingRateRankingList: RankingListItem[]; |     attachingRateRankingList: RankingListItem[]; | ||||||
|     renewalRateRankingList: RankingListItem[]; |     renewalRateRankingList: RankingListItem[]; | ||||||
| }; | } | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * 请求坐席排行榜。 |  * 请求坐席排行榜。 | ||||||
|   | |||||||
| @@ -17,7 +17,7 @@ | |||||||
|         <div class="center-wrapper"> |         <div class="center-wrapper"> | ||||||
|             <span class="slogan">对标先进 比学赶超</span> |             <span class="slogan">对标先进 比学赶超</span> | ||||||
|             <div class="total-archievement-wrapper"> |             <div class="total-archievement-wrapper"> | ||||||
|                 <span>总业绩</span> |                 <span>我的车险业绩</span> | ||||||
|                 <span>{{ getTotalArchievement }}</span> |                 <span>{{ getTotalArchievement }}</span> | ||||||
|             </div> |             </div> | ||||||
|             <div class="archievement-wrapper"> |             <div class="archievement-wrapper"> | ||||||
| @@ -55,9 +55,7 @@ | |||||||
|                     indicator-position="none" |                     indicator-position="none" | ||||||
|                     :interval="4000" |                     :interval="4000" | ||||||
|                 > |                 > | ||||||
|                     <el-carousel-item |                     <el-carousel-item :key="1"> | ||||||
|                         :key="1" |  | ||||||
|                     > |  | ||||||
|                         <RankingListComponent :ranking-list="ui.attachingRankingList" /> |                         <RankingListComponent :ranking-list="ui.attachingRankingList" /> | ||||||
|                     </el-carousel-item> |                     </el-carousel-item> | ||||||
|                     <el-carousel-item :key="2"> |                     <el-carousel-item :key="2"> | ||||||
| @@ -88,9 +86,19 @@ import { computed, reactive, onBeforeMount, onUnmounted } from "vue"; | |||||||
| import { useRouter } from "vue-router"; | import { useRouter } from "vue-router"; | ||||||
| import { getCallerInfo } from "@/utils/api/localStorage.js"; | import { getCallerInfo } from "@/utils/api/localStorage.js"; | ||||||
| import { ElMessage } from "element-plus"; | import { ElMessage } from "element-plus"; | ||||||
| import { type Archievement, queryDepartmentArchievement } from "@/utils/archievement.js"; | import | ||||||
|  | { | ||||||
|  |     type DepartmentArchievement, | ||||||
|  |     queryDepartmentArchievement, | ||||||
|  |     queryCallerArchievement | ||||||
|  | } from "@/utils/archievement.js"; | ||||||
| import { RankingListItem } from "@/types/cpicxim/RankingListItem.js"; | import { RankingListItem } from "@/types/cpicxim/RankingListItem.js"; | ||||||
| import { type RankingListRequest, type RankingListResponse, requestRankingList } from "@/utils/ranking.js"; | import | ||||||
|  | { | ||||||
|  |     type RankingListRequest, | ||||||
|  |     type RankingListResponse, | ||||||
|  |     requestRankingList | ||||||
|  | } from "@/utils/ranking.js"; | ||||||
| import { type Department } from "@/types/cpicxim/Department"; | import { type Department } from "@/types/cpicxim/Department"; | ||||||
| import ArchievementChart from "@/components/ArchievementChartComponent.vue"; | import ArchievementChart from "@/components/ArchievementChartComponent.vue"; | ||||||
| import ArchievementCompleteRateComponent from "@/components/ArchievementCompleteRateComponent.vue"; | import ArchievementCompleteRateComponent from "@/components/ArchievementCompleteRateComponent.vue"; | ||||||
| @@ -113,7 +121,7 @@ interface ui | |||||||
|     showUI: boolean; // 用来刷新页面的开关 |     showUI: boolean; // 用来刷新页面的开关 | ||||||
|     attachingRankingList: RankingListItem[]; // 坐席车非渗透率榜单 |     attachingRankingList: RankingListItem[]; // 坐席车非渗透率榜单 | ||||||
|     renewalRankingList: RankingListItem[]; |     renewalRankingList: RankingListItem[]; | ||||||
| }; | } | ||||||
|  |  | ||||||
| export default { | export default { | ||||||
|     name: "DesktopArchievement", |     name: "DesktopArchievement", | ||||||
| @@ -127,7 +135,20 @@ export default { | |||||||
|     setup() |     setup() | ||||||
|     { |     { | ||||||
|         const monthIndex = new Date(); |         const monthIndex = new Date(); | ||||||
|         const numInChinese = ["一", "二", "三", "四", "五", "六", "七", "八", "九", "十", "十一", "十二",]; |         const numInChinese = [ | ||||||
|  |             "一", | ||||||
|  |             "二", | ||||||
|  |             "三", | ||||||
|  |             "四", | ||||||
|  |             "五", | ||||||
|  |             "六", | ||||||
|  |             "七", | ||||||
|  |             "八", | ||||||
|  |             "九", | ||||||
|  |             "十", | ||||||
|  |             "十一", | ||||||
|  |             "十二", | ||||||
|  |         ]; | ||||||
|         const router = useRouter(); |         const router = useRouter(); | ||||||
|         const callerInfo: TelSaler = getCallerInfo(); |         const callerInfo: TelSaler = getCallerInfo(); | ||||||
|         const ui: ui = reactive({ |         const ui: ui = reactive({ | ||||||
| @@ -147,8 +168,7 @@ export default { | |||||||
|  |  | ||||||
|         const getTotalArchievement = computed(() => |         const getTotalArchievement = computed(() => | ||||||
|         { |         { | ||||||
|             const cnyFormat = new Intl.NumberFormat( "zh-cn", |             const cnyFormat = new Intl.NumberFormat( "zh-cn", { | ||||||
|                 { |  | ||||||
|                 style: "currency", |                 style: "currency", | ||||||
|                 currency: "CNY", |                 currency: "CNY", | ||||||
|                 minimumFractionDigits: 0, |                 minimumFractionDigits: 0, | ||||||
| @@ -159,7 +179,7 @@ export default { | |||||||
|         }); |         }); | ||||||
|  |  | ||||||
|         // 保存业绩数据 |         // 保存业绩数据 | ||||||
|         const applyArchievementData = ( data: Archievement ) => |         const applyDepartmentArchievementData = ( data: DepartmentArchievement ) => | ||||||
|         { |         { | ||||||
|             console.log( "部门业绩数据", data ); |             console.log( "部门业绩数据", data ); | ||||||
|  |  | ||||||
| @@ -175,7 +195,10 @@ export default { | |||||||
|             // 先不显示界面,往队列中加入显示队列的回调,让vue刷新组件。 |             // 先不显示界面,往队列中加入显示队列的回调,让vue刷新组件。 | ||||||
|             ui.showUI = false; |             ui.showUI = false; | ||||||
|  |  | ||||||
|             setTimeout(() => { ui.showUI = true; }, 0 ); |             setTimeout(() => | ||||||
|  |             { | ||||||
|  |                 ui.showUI = true; | ||||||
|  |             }, 0 ); | ||||||
|         }; |         }; | ||||||
|  |  | ||||||
|         const applyRankingListData = ( data: RankingListResponse ): void => |         const applyRankingListData = ( data: RankingListResponse ): void => | ||||||
| @@ -189,7 +212,10 @@ export default { | |||||||
|  |  | ||||||
|             console.log( "获取排行榜后的ui:", data ); |             console.log( "获取排行榜后的ui:", data ); | ||||||
|  |  | ||||||
|             setTimeout(() => { ui.showUI = true; }, 0 ); |             setTimeout(() => | ||||||
|  |             { | ||||||
|  |                 ui.showUI = true; | ||||||
|  |             }, 0 ); | ||||||
|         }; |         }; | ||||||
|  |  | ||||||
|         // 退出桌面霸屏 |         // 退出桌面霸屏 | ||||||
| @@ -218,20 +244,18 @@ export default { | |||||||
|          */ |          */ | ||||||
|         const refresh = () => |         const refresh = () => | ||||||
|         { |         { | ||||||
|             const deparmentInfo: Department = |             const deparmentInfo: Department = { | ||||||
|             { |  | ||||||
|                 departmentCode: callerInfo.departmentCode, |                 departmentCode: callerInfo.departmentCode, | ||||||
|                 departmentName: callerInfo.departmentName, |                 departmentName: callerInfo.departmentName, | ||||||
|             }; |             }; | ||||||
|  |  | ||||||
|             const rankinglistRequest: RankingListRequest = |             const rankinglistRequest: RankingListRequest = { | ||||||
|             { |  | ||||||
|                 departmentCode: callerInfo.departmentCode, |                 departmentCode: callerInfo.departmentCode, | ||||||
|                 year: "2023", |                 year: "2023", | ||||||
|                 month: "06", |                 month: "06", | ||||||
|             }; |             }; | ||||||
|  |  | ||||||
|             queryDepartmentArchievement( deparmentInfo, applyArchievementData ); |             queryDepartmentArchievement( deparmentInfo, applyDepartmentArchievementData ); | ||||||
|             requestRankingList( rankinglistRequest, applyRankingListData ); |             requestRankingList( rankinglistRequest, applyRankingListData ); | ||||||
|         }; |         }; | ||||||
|  |  | ||||||
| @@ -255,7 +279,15 @@ export default { | |||||||
|             clearInterval( timerHandler ); |             clearInterval( timerHandler ); | ||||||
|         }); |         }); | ||||||
|  |  | ||||||
|         return { ui, callerInfo, timerHandler, getTotalArchievement, renderData: applyArchievementData, refresh, logoutDesktopArchievement, }; |         return { | ||||||
|  |             ui, | ||||||
|  |             callerInfo, | ||||||
|  |             timerHandler, | ||||||
|  |             getTotalArchievement, | ||||||
|  |             renderData: applyDepartmentArchievementData, | ||||||
|  |             refresh, | ||||||
|  |             logoutDesktopArchievement, | ||||||
|  |         }; | ||||||
|     }, |     }, | ||||||
| }; | }; | ||||||
| </script> | </script> | ||||||
| @@ -388,12 +420,13 @@ export default { | |||||||
|     // >*+* { |     // >*+* { | ||||||
|     //     margin-top: 15px; |     //     margin-top: 15px; | ||||||
|     // } |     // } | ||||||
|     > h1 { |     >h1 { | ||||||
|         font: { |         font: { | ||||||
|             family: "FZ-ZHUOHEI"; |             family: "FZ-ZHUOHEI"; | ||||||
|             weight: 100; |             weight: 100; | ||||||
|             size: 30px; |             size: 30px; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         color: $color-bg-04; |         color: $color-bg-04; | ||||||
|  |  | ||||||
|         text-align: center; |         text-align: center; | ||||||
| @@ -401,7 +434,7 @@ export default { | |||||||
|         width: 300px; |         width: 300px; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     > div { |     >div { | ||||||
|         display: block; |         display: block; | ||||||
|         height: 260px; |         height: 260px; | ||||||
|         width: 300px; |         width: 300px; | ||||||
| @@ -416,7 +449,7 @@ body { | |||||||
|             $color-bg-03, |             $color-bg-03, | ||||||
|             $color-bg-04, |             $color-bg-04, | ||||||
|             $color-bg-05, |             $color-bg-05, | ||||||
|             $color-bg-05); |             $color-bg-05 ); | ||||||
| } | } | ||||||
|  |  | ||||||
| div { | div { | ||||||
|   | |||||||
| @@ -19,6 +19,7 @@ | |||||||
|         "sourceMap": true, |         "sourceMap": true, | ||||||
|         "resolveJsonModule": true, |         "resolveJsonModule": true, | ||||||
|         "esModuleInterop": false, |         "esModuleInterop": false, | ||||||
|  |         "isolatedModules": true, | ||||||
|         "baseUrl": "./", // paths 路径解析起点 |         "baseUrl": "./", // paths 路径解析起点 | ||||||
|         "paths": { // 别名路径设置 |         "paths": { // 别名路径设置 | ||||||
|             "@/*": [ |             "@/*": [ | ||||||
|   | |||||||
| @@ -1,5 +1,6 @@ | |||||||
| { | { | ||||||
|     "java.configuration.updateBuildConfiguration": "automatic", |     "java.configuration.updateBuildConfiguration": "automatic", | ||||||
|     "java.compile.nullAnalysis.mode": "automatic", |     "java.compile.nullAnalysis.mode": "automatic", | ||||||
|     "vue.codeActions.enabled": false |     "vue.codeActions.enabled": false, | ||||||
|  |     "java.debug.settings.onBuildFailureProceed": true | ||||||
| } | } | ||||||
| @@ -14,7 +14,7 @@ | |||||||
|     <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.24</spring.version> |     <spring.version>5.3.24</spring.version> | ||||||
|     <!-- <spring.version>6.0.8</spring.version> --> |     <!-- <spring.version>6.0.11</spring.version> --> | ||||||
|   </properties> |   </properties> | ||||||
|  |  | ||||||
|   <dependencies> |   <dependencies> | ||||||
| @@ -87,10 +87,21 @@ | |||||||
|       <version>2.13.4</version> |       <version>2.13.4</version> | ||||||
|     </dependency> |     </dependency> | ||||||
|  |  | ||||||
|     <dependency> |     <!-- <dependency> | ||||||
|       <groupId>com.oracle</groupId> |       <groupId>com.oracle</groupId> | ||||||
|       <artifactId>ojdbc8</artifactId> |       <artifactId>ojdbc8</artifactId> | ||||||
|       <version>19.3.0.0.0</version> |       <version>19.3.0.0.0</version> | ||||||
|  |     </dependency> --> | ||||||
|  |  | ||||||
|  |     <dependency> | ||||||
|  |       <groupId>com.oracle.database.jdbc</groupId> | ||||||
|  |       <artifactId>ojdbc10</artifactId> | ||||||
|  |       <version>19.19.0.0</version> | ||||||
|  |     </dependency> | ||||||
|  |     <dependency> | ||||||
|  |       <groupId>com.oracle.database.nls</groupId> | ||||||
|  |       <artifactId>orai18n</artifactId> | ||||||
|  |       <version>23.2.0.0</version> | ||||||
|     </dependency> |     </dependency> | ||||||
|  |  | ||||||
|     <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core --> |     <!-- https://mvnrepository.com/artifact/org.apache.logging.log4j/log4j-core --> | ||||||
| @@ -106,6 +117,12 @@ | |||||||
|       <version>2.20.0</version> |       <version>2.20.0</version> | ||||||
|     </dependency> |     </dependency> | ||||||
|  |  | ||||||
|  |     <dependency> | ||||||
|  |       <groupId>org.mybatis</groupId> | ||||||
|  |       <artifactId>mybatis</artifactId> | ||||||
|  |       <version>3.5.13</version> | ||||||
|  |     </dependency> | ||||||
|  |  | ||||||
|   </dependencies> |   </dependencies> | ||||||
|   <build> |   <build> | ||||||
|     <finalName>desktop_archievement_backend</finalName> |     <finalName>desktop_archievement_backend</finalName> | ||||||
|   | |||||||
| @@ -0,0 +1,19 @@ | |||||||
|  | /* | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-07-27 11:05:53 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/mapper/ArchievementMapper.java | ||||||
|  |  * @Description:  | ||||||
|  |  *  | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  |  */ | ||||||
|  | package com.cpic.xim.mybatis.mapper; | ||||||
|  |  | ||||||
|  | import java.util.HashMap; | ||||||
|  |  | ||||||
|  | public interface ArchievementMapper | ||||||
|  | { | ||||||
|  |     public void getDepartmentArchievement( HashMap<String, Object> params ); | ||||||
|  |  | ||||||
|  |     public void getCallerArchievement( HashMap<String, Object> params ); | ||||||
|  | } | ||||||
| @@ -0,0 +1,17 @@ | |||||||
|  | /* | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-07-29 22:59:09 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/mapper/RankingListMapper.java | ||||||
|  |  * @Description:  | ||||||
|  |  *  | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  |  */ | ||||||
|  | package com.cpic.xim.mybatis.mapper; | ||||||
|  |  | ||||||
|  | import java.util.HashMap; | ||||||
|  |  | ||||||
|  | public interface RankingListMapper | ||||||
|  | { | ||||||
|  |     public void getRankingList( HashMap<String, Object> params ); | ||||||
|  | } | ||||||
| @@ -0,0 +1,95 @@ | |||||||
|  | /* | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-07-27 11:12:19 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/pojo/MensualArchievementItem.java | ||||||
|  |  * @Description: 每月业绩对象。 | ||||||
|  |  *  | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  |  */ | ||||||
|  | package com.cpic.xim.mybatis.pojo; | ||||||
|  |  | ||||||
|  | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
|  |  | ||||||
|  | public class MensualArchievementItem | ||||||
|  | { | ||||||
|  |     public MensualArchievementItem() | ||||||
|  |     {} | ||||||
|  |  | ||||||
|  |     public MensualArchievementItem( int month, String premium) | ||||||
|  |     { | ||||||
|  |         this.month = month; | ||||||
|  |         this.premium = premium; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     public int getMonth() | ||||||
|  |     { | ||||||
|  |         return month; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setMonth( int month ) | ||||||
|  |     { | ||||||
|  |         this.month = month; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String getPremium() | ||||||
|  |     { | ||||||
|  |         return premium; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setPremium( String premium ) | ||||||
|  |     { | ||||||
|  |         this.premium = premium; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public int hashCode() | ||||||
|  |     { | ||||||
|  |         final int prime = 31; | ||||||
|  |         int result = 1; | ||||||
|  |         result = prime * result + month; | ||||||
|  |         result = prime * result + ((premium == null) ? 0 : premium.hashCode()); | ||||||
|  |         return result; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public boolean equals( Object obj ) | ||||||
|  |     { | ||||||
|  |         if ( this == obj ) | ||||||
|  |             return true; | ||||||
|  |         if ( obj == null ) | ||||||
|  |             return false; | ||||||
|  |         if ( getClass() != obj.getClass() ) | ||||||
|  |             return false; | ||||||
|  |         MensualArchievementItem other = (MensualArchievementItem) obj; | ||||||
|  |         if ( month != other.month ) | ||||||
|  |             return false; | ||||||
|  |         if ( premium == null ) | ||||||
|  |         { | ||||||
|  |             if ( other.premium != null ) | ||||||
|  |                 return false; | ||||||
|  |         } else if ( !premium.equals( other.premium ) ) | ||||||
|  |             return false; | ||||||
|  |         return true; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Override | ||||||
|  |     public String toString() | ||||||
|  |     { | ||||||
|  |         return "MensualArchievementItem [month=" + month + ", premium=" + premium + "]"; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |  | ||||||
|  |  | ||||||
|  |     // 月份 | ||||||
|  |     @JsonProperty( "month" ) | ||||||
|  |     private int month; | ||||||
|  |  | ||||||
|  |     // 月总保费 | ||||||
|  |     @JsonProperty( "premium" ) | ||||||
|  |     private String premium; | ||||||
|  | } | ||||||
| @@ -0,0 +1,76 @@ | |||||||
|  | /* | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-07-27 17:22:55 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/mybatis/utils/MybatisUtils.java | ||||||
|  |  * @Description: mybatis的工具集合 | ||||||
|  |  *  | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  |  */ | ||||||
|  | package com.cpic.xim.mybatis.utils; | ||||||
|  |  | ||||||
|  | import java.io.IOException; | ||||||
|  | import java.io.InputStream; | ||||||
|  | import java.util.HashMap; | ||||||
|  | import org.apache.ibatis.io.Resources; | ||||||
|  | import org.apache.ibatis.session.SqlSession; | ||||||
|  | import org.apache.ibatis.session.SqlSessionFactory; | ||||||
|  | import org.apache.ibatis.session.SqlSessionFactoryBuilder; | ||||||
|  |  | ||||||
|  | public class MybatisUtils | ||||||
|  | { | ||||||
|  |     private static HashMap<String, SqlSession> SessionMap = new HashMap<>(); | ||||||
|  |     private static String DEFAULT_CONFIGFILE = "mybatis/mybatis-config.xml"; | ||||||
|  |      | ||||||
|  |     /** | ||||||
|  |      *  | ||||||
|  |      * @param configFile | ||||||
|  |      * @return | ||||||
|  |      * @throws IOException | ||||||
|  |      */ | ||||||
|  |     public static SqlSession getSqlSession(String configFile ) | ||||||
|  |     throws IOException | ||||||
|  |     { | ||||||
|  |         // 根据配置文件的路径,查找是否已经创建了对应的session | ||||||
|  |         SqlSession session = SessionMap.get(configFile); | ||||||
|  |  | ||||||
|  |         // 找到就直接返回 | ||||||
|  |         if ( session != null ) | ||||||
|  |         { | ||||||
|  |             return session; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         // 没找到就创建一个 | ||||||
|  |         InputStream configIS = Resources.getResourceAsStream(configFile); | ||||||
|  |         SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(configIS); | ||||||
|  |         session = factory.openSession(); | ||||||
|  |  | ||||||
|  |         // 保存 | ||||||
|  |         SessionMap.put(configFile, session); | ||||||
|  |  | ||||||
|  |         return session; | ||||||
|  |     } | ||||||
|  |      | ||||||
|  |     public static SqlSession getSqlSession() | ||||||
|  |     throws IOException | ||||||
|  |     { | ||||||
|  |         // 根据配置文件的路径,查找是否已经创建了对应的session | ||||||
|  |         SqlSession session = SessionMap.get(DEFAULT_CONFIGFILE); | ||||||
|  |  | ||||||
|  |         // 找到就直接返回 | ||||||
|  |         if ( session != null ) | ||||||
|  |         { | ||||||
|  |             return session; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         // 没找到就创建一个 | ||||||
|  |         InputStream configIS = Resources.getResourceAsStream(DEFAULT_CONFIGFILE); | ||||||
|  |         SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(configIS); | ||||||
|  |         session = factory.openSession(); | ||||||
|  |  | ||||||
|  |         // 保存 | ||||||
|  |         SessionMap.put(DEFAULT_CONFIGFILE, session); | ||||||
|  |  | ||||||
|  |         return session; | ||||||
|  |     }  | ||||||
|  | } | ||||||
| @@ -9,3 +9,199 @@ | |||||||
|  */ |  */ | ||||||
|  |  | ||||||
| package com.cpic.xim.utils.archievement; | package com.cpic.xim.utils.archievement; | ||||||
|  |  | ||||||
|  | import java.io.IOException; | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.HashMap; | ||||||
|  | import org.apache.ibatis.session.SqlSession; | ||||||
|  | import org.slf4j.Logger; | ||||||
|  | import org.slf4j.LoggerFactory; | ||||||
|  | import com.cpic.xim.mybatis.mapper.ArchievementMapper; | ||||||
|  | import com.cpic.xim.mybatis.pojo.MensualArchievementItem; | ||||||
|  | import com.cpic.xim.mybatis.utils.MybatisUtils; | ||||||
|  | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
|  |  | ||||||
|  | public class CallerArchievement | ||||||
|  | { | ||||||
|  |     private static Logger logger = LoggerFactory.getLogger( CallerArchievement.class ); | ||||||
|  |     private static ArrayList<MensualArchievementItem> monthArray = null; | ||||||
|  |     /** | ||||||
|  |      * 构造函数 | ||||||
|  |      * @param callerCode | ||||||
|  |      * @param totalArchievement | ||||||
|  |      * @param mensualArchievementList | ||||||
|  |      * @param insuranceRenewalRate | ||||||
|  |      * @param attachingRate | ||||||
|  |      */ | ||||||
|  |     public CallerArchievement( String callerCode, long totalArchievement, | ||||||
|  |             ArrayList<MensualArchievementItem> mensualArchievementList, String insuranceRenewalRate, | ||||||
|  |             String attachingRate) | ||||||
|  |     { | ||||||
|  |         this.callerCode = callerCode; | ||||||
|  |         this.totalArchievement = totalArchievement; | ||||||
|  |         this.mensualArchievementList = mensualArchievementList; | ||||||
|  |         this.insuranceRenewalRate = insuranceRenewalRate; | ||||||
|  |         this.attachingRate = attachingRate; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     // 静态代码块 | ||||||
|  |     static | ||||||
|  |     { | ||||||
|  |         // 初始化月份 | ||||||
|  |         monthArray = new ArrayList<MensualArchievementItem>(12); | ||||||
|  |  | ||||||
|  |         monthArray.add(new MensualArchievementItem(1, "0")); | ||||||
|  |         monthArray.add(new MensualArchievementItem(2, "0")); | ||||||
|  |         monthArray.add(new MensualArchievementItem(3, "0")); | ||||||
|  |         monthArray.add(new MensualArchievementItem(4, "0")); | ||||||
|  |         monthArray.add(new MensualArchievementItem(5, "0")); | ||||||
|  |         monthArray.add(new MensualArchievementItem(6, "0")); | ||||||
|  |         monthArray.add(new MensualArchievementItem(7, "0")); | ||||||
|  |         monthArray.add(new MensualArchievementItem(8, "0")); | ||||||
|  |         monthArray.add(new MensualArchievementItem(9, "0")); | ||||||
|  |         monthArray.add(new MensualArchievementItem(10, "0")); | ||||||
|  |         monthArray.add(new MensualArchievementItem(11, "0")); | ||||||
|  |         monthArray.add(new MensualArchievementItem(12, "0")); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public CallerArchievement() | ||||||
|  |     { | ||||||
|  |         this.totalArchievement = 0; | ||||||
|  |         this.mensualArchievementList = null; | ||||||
|  |         this.insuranceRenewalRate = ""; | ||||||
|  |         this.attachingRate = ""; | ||||||
|  |         this.callerCode = ""; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static CallerArchievement getCallerArchievement( String callerCode ) throws IOException | ||||||
|  |     { | ||||||
|  |         CallerArchievement archievement = null; | ||||||
|  |  | ||||||
|  |         SqlSession session = MybatisUtils.getSqlSession(); | ||||||
|  |         ArchievementMapper mapper = session.getMapper( ArchievementMapper.class ); | ||||||
|  |         HashMap<String, Object> params = new HashMap<String, Object>(); | ||||||
|  |         Integer totalArchievement = null; | ||||||
|  |         String attachingRate = null; | ||||||
|  |         String renewalRate = null; | ||||||
|  |         ArrayList<MensualArchievementItem> mensual = null; | ||||||
|  |  | ||||||
|  |         params.put( "a_caller_code", callerCode ); | ||||||
|  |  | ||||||
|  |         mapper.getCallerArchievement( params ); | ||||||
|  |  | ||||||
|  |         // 总业绩 | ||||||
|  |         if ( params.get( "a_total" ) instanceof Integer ) | ||||||
|  |         { | ||||||
|  |             totalArchievement = (Integer) params.get( "a_total" ); | ||||||
|  |         } else | ||||||
|  |         { | ||||||
|  |             totalArchievement = Integer.valueOf( 0 ); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         // 车非融合 | ||||||
|  |         if ( params.get( "a_attaching_rate" ) instanceof String ) | ||||||
|  |         { | ||||||
|  |             attachingRate = (String) params.get( "a_attaching_rate" ); | ||||||
|  |         } else | ||||||
|  |         { | ||||||
|  |             attachingRate = "0.0"; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         // 续保率 | ||||||
|  |         if ( params.get( "a_renewal_rate" ) instanceof String ) | ||||||
|  |         { | ||||||
|  |             renewalRate = (String) params.get( "a_renewal_rate" ); | ||||||
|  |         } else | ||||||
|  |         { | ||||||
|  |             renewalRate = "0.0"; | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         // 处理每月业绩 | ||||||
|  |         ArrayList<MensualArchievementItem> mensualList = new ArrayList<>(CallerArchievement.monthArray); | ||||||
|  |         // 数据库接收的每月业绩,要检查是否有缺漏 | ||||||
|  |         mensual = (ArrayList<MensualArchievementItem>) params.get( "a_mensual_cur" ); | ||||||
|  |  | ||||||
|  |         archievement = new CallerArchievement( callerCode, totalArchievement, mensual, renewalRate, | ||||||
|  |                 attachingRate ); | ||||||
|  |  | ||||||
|  |         return archievement; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static Logger getLogger() | ||||||
|  |     { | ||||||
|  |         return logger; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public static void setLogger( Logger logger ) | ||||||
|  |     { | ||||||
|  |         CallerArchievement.logger = logger; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String getCallerCode() | ||||||
|  |     { | ||||||
|  |         return callerCode; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setCallerCode( String callerCode ) | ||||||
|  |     { | ||||||
|  |         this.callerCode = callerCode; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public long getTotalArchievement() | ||||||
|  |     { | ||||||
|  |         return totalArchievement; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setTotalArchievement( long totalArchievement ) | ||||||
|  |     { | ||||||
|  |         this.totalArchievement = totalArchievement; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public ArrayList<MensualArchievementItem> getMensualArchievementList() | ||||||
|  |     { | ||||||
|  |         return mensualArchievementList; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setMensualArchievementList( | ||||||
|  |             ArrayList<MensualArchievementItem> mensualArchievementList ) | ||||||
|  |     { | ||||||
|  |         this.mensualArchievementList = mensualArchievementList; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String getInsuranceRenewalRate() | ||||||
|  |     { | ||||||
|  |         return insuranceRenewalRate; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setInsuranceRenewalRate( String insuranceRenewalRate ) | ||||||
|  |     { | ||||||
|  |         this.insuranceRenewalRate = insuranceRenewalRate; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String getAttachingRate() | ||||||
|  |     { | ||||||
|  |         return attachingRate; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setAttachingRate( String attachingRate ) | ||||||
|  |     { | ||||||
|  |         this.attachingRate = attachingRate; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @JsonProperty( "caller_code" ) | ||||||
|  |     private String callerCode; | ||||||
|  |  | ||||||
|  |     @JsonProperty( "total_archievement" ) | ||||||
|  |     private long totalArchievement; // 总业绩 | ||||||
|  |  | ||||||
|  |     // 每月业绩列表 | ||||||
|  |     // 要保证数据是按照月份排序。 | ||||||
|  |     @JsonProperty( "mensual_archievement_list" ) | ||||||
|  |     private ArrayList<MensualArchievementItem> mensualArchievementList; | ||||||
|  |  | ||||||
|  |     @JsonProperty( "insurance_renewal_rate" ) | ||||||
|  |     private String insuranceRenewalRate; // 续保率 | ||||||
|  |  | ||||||
|  |     @JsonProperty( "attaching_rate" ) | ||||||
|  |     private String attachingRate; // 车非渗透率 | ||||||
|  | } | ||||||
|   | |||||||
| @@ -9,22 +9,21 @@ | |||||||
|  */ |  */ | ||||||
| package com.cpic.xim.utils.archievement; | package com.cpic.xim.utils.archievement; | ||||||
|  |  | ||||||
| import java.sql.Connection; | import java.io.IOException; | ||||||
| import java.sql.DriverManager; | import java.util.ArrayList; | ||||||
| import java.sql.ResultSet; | import java.util.HashMap; | ||||||
| import java.sql.SQLException; | import org.apache.ibatis.session.SqlSession; | ||||||
| import java.util.Vector; | import org.slf4j.Logger; | ||||||
|  | import org.slf4j.LoggerFactory; | ||||||
|  | import com.cpic.xim.mybatis.mapper.ArchievementMapper; | ||||||
|  | import com.cpic.xim.mybatis.pojo.MensualArchievementItem; | ||||||
|  | import com.cpic.xim.mybatis.utils.MybatisUtils; | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
| import oracle.jdbc.OracleCallableStatement; |  | ||||||
| import oracle.jdbc.OracleTypes; |  | ||||||
|  |  | ||||||
| public class DepartmentArchievement | public class DepartmentArchievement | ||||||
| { | { | ||||||
|  |     // log4j2 | ||||||
|     // 以后要改 |     private static Logger logger = LoggerFactory.getLogger(DepartmentArchievement.class); | ||||||
|     private static String jdbcURL = "jdbc:oracle:thin:@10.39.0.86:1521:xmcx1"; |  | ||||||
|     private static String userName = "desktop_archievement_admin"; |  | ||||||
|     private static String password = "Cpic123456"; |  | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 默认的构造函数,提供给json使用。 |      * 默认的构造函数,提供给json使用。 | ||||||
| @@ -32,21 +31,24 @@ public class DepartmentArchievement | |||||||
|     public DepartmentArchievement() |     public DepartmentArchievement() | ||||||
|     { |     { | ||||||
|         this.totalArchievement = 0; |         this.totalArchievement = 0; | ||||||
|         this.mensualArchievementList = new Vector<>(); |         this.mensualArchievementList = null; | ||||||
|         this.insuranceRenewalRate = ""; |         this.insuranceRenewalRate = ""; | ||||||
|         this.attachingRate = ""; |         this.attachingRate = ""; | ||||||
|  |         this.departmentCode = ""; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @brief 构造函数,提供所有成员对象的值。 |      * @brief 构造函数,提供所有成员对象的值。 | ||||||
|      * @param totalArchievement |      * @param departmentCode 部门代码 | ||||||
|      * @param mensualArchievementList |      * @param totalArchievement 总业绩 | ||||||
|      * @param insuranceRenewalRate |      * @param mensualArchievementList 每月业绩表 | ||||||
|      * @param attachingRate |      * @param insuranceRenewalRate 续保率 | ||||||
|  |      * @param attachingRate 车非渗透率 | ||||||
|      */ |      */ | ||||||
|     public DepartmentArchievement( long totalArchievement, Vector<Long> mensualArchievementList, |     public DepartmentArchievement( String departmentCode, long totalArchievement, | ||||||
|             String insuranceRenewalRate, String attachingRate) |             ArrayList<MensualArchievementItem> mensualArchievementList, String insuranceRenewalRate, String attachingRate) | ||||||
|     { |     { | ||||||
|  |         this.departmentCode = departmentCode; | ||||||
|         this.totalArchievement = totalArchievement; |         this.totalArchievement = totalArchievement; | ||||||
|         this.mensualArchievementList = mensualArchievementList; |         this.mensualArchievementList = mensualArchievementList; | ||||||
|         this.insuranceRenewalRate = insuranceRenewalRate; |         this.insuranceRenewalRate = insuranceRenewalRate; | ||||||
| @@ -57,86 +59,45 @@ public class DepartmentArchievement | |||||||
|      * 静态方法,用于根据部门代码,查询部门业绩,生成一个 DepartmentArchievement 对象。 |      * 静态方法,用于根据部门代码,查询部门业绩,生成一个 DepartmentArchievement 对象。 | ||||||
|      * @param departmentCode 部门代码 |      * @param departmentCode 部门代码 | ||||||
|      * @return |      * @return | ||||||
|      * @throws SQLException |      * @throws IOException | ||||||
|      * @throws ClassNotFoundException |  | ||||||
|      */ |      */ | ||||||
|     public static DepartmentArchievement queryDepartmentArchievement( String departmentCode ) |     @SuppressWarnings("unchecked") | ||||||
|             throws SQLException, ClassNotFoundException |     public static DepartmentArchievement getDepartmentArchievement( String departmentCode ) | ||||||
|  |             throws IOException | ||||||
|     { |     { | ||||||
|         Connection connection = null; |  | ||||||
|         java.sql.CallableStatement statement = null; |  | ||||||
|         ResultSet menusual_cursor = null; |  | ||||||
|  |  | ||||||
|         DepartmentArchievement archievement = null; |         DepartmentArchievement archievement = null; | ||||||
|  |  | ||||||
|         String sql = "{call telsale_archievement_pkg.department_archievement(?,?,?,?,?)}"; |  | ||||||
|  |  | ||||||
|         try |         try | ||||||
|         { |         { | ||||||
|             Class.forName( "oracle.jdbc.driver.OracleDriver" ); |             SqlSession session = MybatisUtils.getSqlSession(); | ||||||
|             connection = DriverManager.getConnection( jdbcURL, userName, password ); |             ArchievementMapper mapper = session.getMapper(ArchievementMapper.class); | ||||||
|             statement = connection.prepareCall( sql ); |  | ||||||
|  |  | ||||||
|             statement.setString( 1, departmentCode ); |             // 参数集合 | ||||||
|             statement.registerOutParameter( 2, java.sql.Types.VARCHAR ); |             HashMap<String, Object> params = new HashMap<>(5); | ||||||
|             statement.registerOutParameter( 3, java.sql.Types.VARCHAR ); |  | ||||||
|             statement.registerOutParameter( 4, java.sql.Types.INTEGER ); |  | ||||||
|             statement.registerOutParameter( 5, OracleTypes.CURSOR ); |  | ||||||
|              |              | ||||||
|             statement.execute(); |             params.put("a_department_code", departmentCode); | ||||||
|  |  | ||||||
|             Vector<Long> menusual_list = new Vector<Long>(); |             mapper.getDepartmentArchievement(params); | ||||||
|             String attach_rate = statement.getString( 2 ); |  | ||||||
|             String renewal_rate = statement.getString( 3 ); |  | ||||||
|             long totalArchievement = statement.getInt( 4 ); |  | ||||||
|  |  | ||||||
|             menusual_cursor = ((OracleCallableStatement) statement).getCursor( 5 ); |             Integer totalArchievement = (Integer)params.get("a_total"); | ||||||
|  |             String attachingRate = (String)params.get("a_attaching_rate"); | ||||||
|  |             String renewalRate = (String)params.get("a_renewal_rate"); | ||||||
|  |             ArrayList<MensualArchievementItem> mensual = (ArrayList<MensualArchievementItem>)params.get("a_mensual_cur"); | ||||||
|  |  | ||||||
|             while ( menusual_cursor.next()) |             archievement = new DepartmentArchievement( | ||||||
|             { |                 departmentCode,  | ||||||
|                 menusual_list.add( menusual_cursor.getLong( 2 ) ); |                 totalArchievement.intValue(),  | ||||||
|  |                 mensual,  | ||||||
|  |                 renewalRate,  | ||||||
|  |                 attachingRate); | ||||||
|         } |         } | ||||||
|  |         catch ( IOException error ) | ||||||
|  |         { | ||||||
|  |             String errorMessage = "查询" + departmentCode + "业绩时出现错误。"; | ||||||
|  |  | ||||||
|             archievement = new DepartmentArchievement( totalArchievement, menusual_list, |             logger.error(errorMessage, error); | ||||||
|                     renewal_rate, attach_rate ); |  | ||||||
|         } |  | ||||||
|         finally |  | ||||||
|         { |  | ||||||
|             try |  | ||||||
|             { |  | ||||||
|                 if ( menusual_cursor != null ) |  | ||||||
|                 { |  | ||||||
|                     menusual_cursor.close(); |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|             catch ( Exception exception ) |  | ||||||
|             { |  | ||||||
|                 exception.printStackTrace(); |  | ||||||
|             } |  | ||||||
|  |  | ||||||
|             try |             throw error; | ||||||
|             { |  | ||||||
|                 if ( statement != null ) |  | ||||||
|                 { |  | ||||||
|                     statement.close(); |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|             catch ( Exception exception ) |  | ||||||
|             { |  | ||||||
|                 exception.printStackTrace(); |  | ||||||
|             } |  | ||||||
|  |  | ||||||
|             try |  | ||||||
|             { |  | ||||||
|                 if ( connection != null ) |  | ||||||
|                 { |  | ||||||
|                     connection.close(); |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|             catch ( Exception exception ) |  | ||||||
|             { |  | ||||||
|                 exception.printStackTrace(); |  | ||||||
|             } |  | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         return archievement; |         return archievement; | ||||||
| @@ -152,12 +113,12 @@ public class DepartmentArchievement | |||||||
|         this.totalArchievement = totalArchievement; |         this.totalArchievement = totalArchievement; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public Vector<Long> getMensualArchievementList() |     public ArrayList<MensualArchievementItem> getMensualArchievementList() | ||||||
|     { |     { | ||||||
|         return mensualArchievementList; |         return mensualArchievementList; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public void setMensualArchievementList( Vector<Long> mensualArchievementList ) |     public void setMensualArchievementList( ArrayList<MensualArchievementItem> mensualArchievementList ) | ||||||
|     { |     { | ||||||
|         this.mensualArchievementList = mensualArchievementList; |         this.mensualArchievementList = mensualArchievementList; | ||||||
|     } |     } | ||||||
| @@ -182,13 +143,26 @@ public class DepartmentArchievement | |||||||
|         this.attachingRate = attachingRate; |         this.attachingRate = attachingRate; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     public String getDepartmentCode() | ||||||
|  |     { | ||||||
|  |         return departmentCode; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setDepartmentCode( String departmentCode ) | ||||||
|  |     { | ||||||
|  |         this.departmentCode = departmentCode; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @JsonProperty( "department_code" ) | ||||||
|  |     private String departmentCode; | ||||||
|  |  | ||||||
|     @JsonProperty( "total_archievement" ) |     @JsonProperty( "total_archievement" ) | ||||||
|     private long totalArchievement; // 总业绩 |     private long totalArchievement; // 总业绩 | ||||||
|  |  | ||||||
|     // 每月业绩列表 |     // 每月业绩列表 | ||||||
|     // 要保证数据是按照月份排序。 |     // 要保证数据是按照月份排序。 | ||||||
|     @JsonProperty( "mensual_archievement_list" ) |     @JsonProperty( "mensual_archievement_list" ) | ||||||
|     private Vector<Long> mensualArchievementList; |     private ArrayList<MensualArchievementItem> mensualArchievementList; | ||||||
|  |  | ||||||
|     @JsonProperty( "insurance_renewal_rate" ) |     @JsonProperty( "insurance_renewal_rate" ) | ||||||
|     private String insuranceRenewalRate; // 续保率 |     private String insuranceRenewalRate; // 续保率 | ||||||
|   | |||||||
| @@ -0,0 +1,25 @@ | |||||||
|  | /* | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-07-28 18:39:50 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/utils/exception/ConfigFileExecption.java | ||||||
|  |  * @Description: 配置文件异常 | ||||||
|  |  *  | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  |  */ | ||||||
|  |  | ||||||
|  |  | ||||||
|  | package com.cpic.xim.utils.exception; | ||||||
|  |  | ||||||
|  | public class ConfigFileExecption extends Exception | ||||||
|  | { | ||||||
|  |     public ConfigFileExecption() | ||||||
|  |     { | ||||||
|  |         super("配置文件错误!"); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public ConfigFileExecption( String message ) | ||||||
|  |     { | ||||||
|  |         super( message ); | ||||||
|  |     } | ||||||
|  | } | ||||||
| @@ -9,12 +9,17 @@ | |||||||
|  */ |  */ | ||||||
| package com.cpic.xim.utils.ranking; | package com.cpic.xim.utils.ranking; | ||||||
|  |  | ||||||
|  | import java.io.IOException; | ||||||
| import java.sql.CallableStatement; | import java.sql.CallableStatement; | ||||||
| import java.sql.Connection; | import java.sql.Connection; | ||||||
| import java.sql.DriverManager; | import java.sql.DriverManager; | ||||||
| import java.sql.ResultSet; | import java.sql.ResultSet; | ||||||
| import java.sql.SQLException; | import java.sql.SQLException; | ||||||
| import java.util.Vector; | import java.util.ArrayList; | ||||||
|  | import java.util.HashMap; | ||||||
|  | import org.apache.ibatis.session.SqlSession; | ||||||
|  | import com.cpic.xim.mybatis.mapper.RankingListMapper; | ||||||
|  | import com.cpic.xim.mybatis.utils.MybatisUtils; | ||||||
| import oracle.jdbc.OracleCallableStatement; | import oracle.jdbc.OracleCallableStatement; | ||||||
| import oracle.jdbc.OracleTypes; | import oracle.jdbc.OracleTypes; | ||||||
|  |  | ||||||
| @@ -26,8 +31,8 @@ public class CallerRankingList | |||||||
|     private static String password = "Cpic123456"; |     private static String password = "Cpic123456"; | ||||||
|  |  | ||||||
|     private CallerRankingList( String departmentCode, String year, String month, |     private CallerRankingList( String departmentCode, String year, String month, | ||||||
|             Vector<CallerRankingItem> attachingRateRankingList, |             ArrayList<CallerRankingItem> attachingRateRankingList, | ||||||
|             Vector<CallerRankingItem> renewalRateRankingList) |             ArrayList<CallerRankingItem> renewalRateRankingList) | ||||||
|     { |     { | ||||||
|         this.departmentCode = departmentCode; |         this.departmentCode = departmentCode; | ||||||
|         this.year = year; |         this.year = year; | ||||||
| @@ -36,6 +41,33 @@ public class CallerRankingList | |||||||
|         this.renewalRateRankingList = renewalRateRankingList; |         this.renewalRateRankingList = renewalRateRankingList; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @SuppressWarnings("unchecked") | ||||||
|  |     public static CallerRankingList getCallerRankingList( String departmentCode, String year, | ||||||
|  |             String month ) throws IOException | ||||||
|  |     { | ||||||
|  |         CallerRankingList rankingList = null; | ||||||
|  |  | ||||||
|  |         // String monthRegx = "(0[1-9])|(1[0-2])"; | ||||||
|  |         // String yearRegx = "202[0-9]"; | ||||||
|  |  | ||||||
|  |         SqlSession session = MybatisUtils.getSqlSession(); | ||||||
|  |         RankingListMapper mapper = session.getMapper(RankingListMapper.class); | ||||||
|  |         HashMap<String,Object> params = new HashMap<>(); | ||||||
|  |          | ||||||
|  |         params.put("a_department_code", departmentCode); | ||||||
|  |         params.put("a_year", year); | ||||||
|  |         params.put("a_month", month); | ||||||
|  |  | ||||||
|  |         mapper.getRankingList(params); | ||||||
|  |  | ||||||
|  |         ArrayList<CallerRankingItem> attachingRateRankingList = (ArrayList<CallerRankingItem>)params.get("a_attaching_ranking_list"); | ||||||
|  |         ArrayList<CallerRankingItem> renewalRateList = (ArrayList<CallerRankingItem>)params.get("a_renewal_ranking_list"); | ||||||
|  |          | ||||||
|  |         rankingList = new CallerRankingList(departmentCode, year, month, attachingRateRankingList, renewalRateList); | ||||||
|  |          | ||||||
|  |         return rankingList; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * @brief static方法,用于查询部门坐席排行榜 |      * @brief static方法,用于查询部门坐席排行榜 | ||||||
|      * @param departmentCode 部门代码 |      * @param departmentCode 部门代码 | ||||||
| @@ -43,7 +75,7 @@ public class CallerRankingList | |||||||
|      * @param month 排行榜月份 |      * @param month 排行榜月份 | ||||||
|      * @return CallerRankingList的实例对象 |      * @return CallerRankingList的实例对象 | ||||||
|      */ |      */ | ||||||
|     public static CallerRankingList getCallerRankingList( String departmentCode, String year, |     public static CallerRankingList getCallerRankingList2( String departmentCode, String year, | ||||||
|             String month ) throws ClassNotFoundException, SQLException |             String month ) throws ClassNotFoundException, SQLException | ||||||
|     { |     { | ||||||
|         CallerRankingList rankingList = null; |         CallerRankingList rankingList = null; | ||||||
| @@ -55,11 +87,11 @@ public class CallerRankingList | |||||||
|         String sql = """ |         String sql = """ | ||||||
|                 {call telsale_archievement_pkg.caller_arch_ranking_list(?,?,?,?,?)} |                 {call telsale_archievement_pkg.caller_arch_ranking_list(?,?,?,?,?)} | ||||||
|                 """; |                 """; | ||||||
|         String monthRegx = "(0[1-9])|(1[0-2])"; |         // String monthRegx = "(0[1-9])|(1[0-2])"; | ||||||
|         String yearRegx = "20[0-2][0-0]"; |         // String yearRegx = "20[0-2][0-0]"; | ||||||
|  |  | ||||||
|         Vector<CallerRankingItem> attachingRateRankingList = new Vector<>(); |         ArrayList<CallerRankingItem> attachingRateRankingList = new ArrayList<>(); | ||||||
|         Vector<CallerRankingItem> renewalRateRankingList = new Vector<>(); |         ArrayList<CallerRankingItem> renewalRateRankingList = new ArrayList<>(); | ||||||
|  |  | ||||||
|         int index = 1; |         int index = 1; | ||||||
|  |  | ||||||
| @@ -81,7 +113,7 @@ public class CallerRankingList | |||||||
|             cur_attaching = ((OracleCallableStatement) statement).getCursor( 4 ); |             cur_attaching = ((OracleCallableStatement) statement).getCursor( 4 ); | ||||||
|             index = 1; |             index = 1; | ||||||
|  |  | ||||||
|             while ( cur_attaching.next()) |             while (cur_attaching.next()) | ||||||
|             { |             { | ||||||
|                 String callerName = cur_attaching.getString( 1 ); |                 String callerName = cur_attaching.getString( 1 ); | ||||||
|                 String appraiseValue = cur_attaching.getString( 2 ); |                 String appraiseValue = cur_attaching.getString( 2 ); | ||||||
| @@ -98,7 +130,7 @@ public class CallerRankingList | |||||||
|             cur_renewal = ((OracleCallableStatement) statement).getCursor( 5 ); |             cur_renewal = ((OracleCallableStatement) statement).getCursor( 5 ); | ||||||
|             index = 1; |             index = 1; | ||||||
|  |  | ||||||
|             while ( cur_renewal.next()) |             while (cur_renewal.next()) | ||||||
|             { |             { | ||||||
|                 String callerName = cur_renewal.getString( 1 ); |                 String callerName = cur_renewal.getString( 1 ); | ||||||
|                 String appraiseValue = cur_renewal.getString( 2 ); |                 String appraiseValue = cur_renewal.getString( 2 ); | ||||||
| @@ -153,7 +185,6 @@ public class CallerRankingList | |||||||
|             } |             } | ||||||
|         } |         } | ||||||
|  |  | ||||||
|  |  | ||||||
|         return rankingList; |         return rankingList; | ||||||
|     } |     } | ||||||
|  |  | ||||||
| @@ -187,22 +218,22 @@ public class CallerRankingList | |||||||
|         this.month = month; |         this.month = month; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public Vector<CallerRankingItem> getAttachingRateRankingList() |     public ArrayList<CallerRankingItem> getAttachingRateRankingList() | ||||||
|     { |     { | ||||||
|         return attachingRateRankingList; |         return attachingRateRankingList; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public void setAttachingRateRankingList( Vector<CallerRankingItem> attachingRateRankingList ) |     public void setAttachingRateRankingList( ArrayList<CallerRankingItem> attachingRateRankingList ) | ||||||
|     { |     { | ||||||
|         this.attachingRateRankingList = attachingRateRankingList; |         this.attachingRateRankingList = attachingRateRankingList; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public Vector<CallerRankingItem> getRenewalRateRankingList() |     public ArrayList<CallerRankingItem> getRenewalRateRankingList() | ||||||
|     { |     { | ||||||
|         return renewalRateRankingList; |         return renewalRateRankingList; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public void setRenewalRateRankingList( Vector<CallerRankingItem> renewalRateRankingList ) |     public void setRenewalRateRankingList( ArrayList<CallerRankingItem> renewalRateRankingList ) | ||||||
|     { |     { | ||||||
|         this.renewalRateRankingList = renewalRateRankingList; |         this.renewalRateRankingList = renewalRateRankingList; | ||||||
|     } |     } | ||||||
| @@ -217,9 +248,9 @@ public class CallerRankingList | |||||||
|     private String month; |     private String month; | ||||||
|  |  | ||||||
|     // 车非融合率排行 |     // 车非融合率排行 | ||||||
|     private Vector<CallerRankingItem> attachingRateRankingList; |     private ArrayList<CallerRankingItem> attachingRateRankingList; | ||||||
|  |  | ||||||
|     // 续保率排行 |     // 续保率排行 | ||||||
|     private Vector<CallerRankingItem> renewalRateRankingList; |     private ArrayList<CallerRankingItem> renewalRateRankingList; | ||||||
|  |  | ||||||
| } | } | ||||||
|   | |||||||
| @@ -11,7 +11,6 @@ package com.cpic.xim.web.controllers.account; | |||||||
|  |  | ||||||
| import java.sql.SQLException; | import java.sql.SQLException; | ||||||
| import org.springframework.stereotype.Controller; | import org.springframework.stereotype.Controller; | ||||||
| import org.springframework.web.bind.annotation.CrossOrigin; |  | ||||||
| import org.springframework.web.bind.annotation.RequestBody; | import org.springframework.web.bind.annotation.RequestBody; | ||||||
| import org.springframework.web.bind.annotation.RequestMapping; | import org.springframework.web.bind.annotation.RequestMapping; | ||||||
| import org.springframework.web.bind.annotation.RequestParam; | import org.springframework.web.bind.annotation.RequestParam; | ||||||
|   | |||||||
| @@ -13,31 +13,41 @@ | |||||||
|  |  | ||||||
| package com.cpic.xim.web.controllers.archievement; | package com.cpic.xim.web.controllers.archievement; | ||||||
|  |  | ||||||
| import java.sql.SQLException; | import java.io.IOException; | ||||||
| import java.util.Vector; | import java.util.ArrayList; | ||||||
|  | import org.slf4j.Logger; | ||||||
|  | import org.slf4j.LoggerFactory; | ||||||
| import org.springframework.stereotype.Controller; | import org.springframework.stereotype.Controller; | ||||||
| import org.springframework.web.bind.annotation.PostMapping; | import org.springframework.web.bind.annotation.PostMapping; | ||||||
| import org.springframework.web.bind.annotation.RequestBody; | import org.springframework.web.bind.annotation.RequestBody; | ||||||
| import org.springframework.web.bind.annotation.RequestMapping; | import org.springframework.web.bind.annotation.RequestMapping; | ||||||
| import org.springframework.web.bind.annotation.ResponseBody; | import org.springframework.web.bind.annotation.ResponseBody; | ||||||
|  | import com.cpic.xim.utils.archievement.CallerArchievement; | ||||||
| import com.cpic.xim.utils.archievement.DepartmentArchievement; | import com.cpic.xim.utils.archievement.DepartmentArchievement; | ||||||
| import com.cpic.xim.utils.ranking.CallerRankingItem; | import com.cpic.xim.utils.ranking.CallerRankingItem; | ||||||
| import com.cpic.xim.utils.ranking.CallerRankingList; | import com.cpic.xim.utils.ranking.CallerRankingList; | ||||||
| import com.cpic.xim.web.controllers.archievement.RankingList.RankingListRequest; | import com.cpic.xim.web.controllers.archievement.RankingList.RankingListRequest; | ||||||
| import com.cpic.xim.web.controllers.archievement.RankingList.RankingListResponse; | import com.cpic.xim.web.controllers.archievement.RankingList.RankingListResponse; | ||||||
|  | import com.cpic.xim.web.controllers.archievement.caller.CallerArchievementQueryRequest; | ||||||
|  | import com.cpic.xim.web.controllers.archievement.caller.CallerArchievementQueryResult; | ||||||
|  | import com.cpic.xim.web.controllers.archievement.department.DepartmentArchievementQueryRequest; | ||||||
|  | import com.cpic.xim.web.controllers.archievement.department.DepartmentArchievementQueryResult; | ||||||
|  |  | ||||||
| @Controller | @Controller | ||||||
| @RequestMapping( "/archievement" ) | @RequestMapping( "/archievement" ) | ||||||
| public class ArchievementQueryController | public class ArchievementQueryController | ||||||
| { | { | ||||||
|  |     // 日志 | ||||||
|  |     private static Logger logger = LoggerFactory.getLogger( ArchievementQueryController.class ); | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 查询坐席业绩 |      * 查询坐席业绩 | ||||||
|      */ |      */ | ||||||
|     @PostMapping( "/query_caller_archievement.do" ) |     // @PostMapping( "/query_caller_archievement.do" ) | ||||||
|     public void queryCallerArchievement() |     // public void queryCallerArchievement() | ||||||
|     { |     // { | ||||||
|  |  | ||||||
|     } |     // } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * 查询部门业绩 |      * 查询部门业绩 | ||||||
| @@ -55,8 +65,8 @@ public class ArchievementQueryController | |||||||
|         try |         try | ||||||
|         { |         { | ||||||
|             // 查询业绩 |             // 查询业绩 | ||||||
|             departmentArch = DepartmentArchievement |             departmentArch = | ||||||
|                     .queryDepartmentArchievement( request.getDepartmentCode() ); |                     DepartmentArchievement.getDepartmentArchievement( request.getDepartmentCode() ); | ||||||
|  |  | ||||||
|             result.setTotalArchievement( departmentArch.getTotalArchievement() ); |             result.setTotalArchievement( departmentArch.getTotalArchievement() ); | ||||||
|             result.setInsuranceRenewalRate( departmentArch.getInsuranceRenewalRate() ); |             result.setInsuranceRenewalRate( departmentArch.getInsuranceRenewalRate() ); | ||||||
| @@ -67,11 +77,7 @@ public class ArchievementQueryController | |||||||
|             result.addBackwardStaff( "王炜" ); |             result.addBackwardStaff( "王炜" ); | ||||||
|             result.setMensualArchievementList( departmentArch.getMensualArchievementList() ); |             result.setMensualArchievementList( departmentArch.getMensualArchievementList() ); | ||||||
|         } |         } | ||||||
|         catch ( SQLException error ) |         catch ( IOException error ) | ||||||
|         { |  | ||||||
|  |  | ||||||
|         } |  | ||||||
|         catch ( ClassNotFoundException error ) |  | ||||||
|         { |         { | ||||||
|  |  | ||||||
|         } |         } | ||||||
| @@ -82,6 +88,31 @@ public class ArchievementQueryController | |||||||
|         return result; |         return result; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     @ResponseBody | ||||||
|  |     @PostMapping( "/query_caller_archievement.do" ) | ||||||
|  |     public CallerArchievementQueryResult queryCallerArchievement( | ||||||
|  |             @RequestBody CallerArchievementQueryRequest request ) | ||||||
|  |     { | ||||||
|  |         CallerArchievementQueryResult result = null; | ||||||
|  |  | ||||||
|  |         try | ||||||
|  |         { | ||||||
|  |             CallerArchievement archievement = | ||||||
|  |                     CallerArchievement.getCallerArchievement( request.getCallerCode() ); | ||||||
|  |  | ||||||
|  |             result = new CallerArchievementQueryResult( true, "查询成功", archievement.getCallerCode(), | ||||||
|  |                     request.getCallName(), archievement.getTotalArchievement(), | ||||||
|  |                     archievement.getMensualArchievementList(), | ||||||
|  |                     archievement.getInsuranceRenewalRate(), archievement.getAttachingRate() ); | ||||||
|  |         } | ||||||
|  |         catch ( IOException error ) | ||||||
|  |         { | ||||||
|  |             result = new CallerArchievementQueryResult(false, error.getMessage(), null, null, 0, null, null, null); | ||||||
|  |         } | ||||||
|  |  | ||||||
|  |         return result; | ||||||
|  |     } | ||||||
|  |  | ||||||
|     @RequestMapping( "/query_ranking_list.do" ) |     @RequestMapping( "/query_ranking_list.do" ) | ||||||
|     @ResponseBody |     @ResponseBody | ||||||
|     public RankingListResponse queryCallerArchievementRankingList( |     public RankingListResponse queryCallerArchievementRankingList( | ||||||
| @@ -94,8 +125,8 @@ public class ArchievementQueryController | |||||||
|         boolean success = false; |         boolean success = false; | ||||||
|         String message = ""; |         String message = ""; | ||||||
|  |  | ||||||
|         Vector<CallerRankingItem> attachingRateRankingList = null; |         ArrayList<CallerRankingItem> attachingRateRankingList = null; | ||||||
|         Vector<CallerRankingItem> renewalRateRankingList = null; |         ArrayList<CallerRankingItem> renewalRateRankingList = null; | ||||||
|  |  | ||||||
|  |  | ||||||
|         try |         try | ||||||
| @@ -109,19 +140,12 @@ public class ArchievementQueryController | |||||||
|             success = true; |             success = true; | ||||||
|             message = "调用成功!"; |             message = "调用成功!"; | ||||||
|         } |         } | ||||||
|         catch ( SQLException error ) |         catch ( IOException error ) | ||||||
|         { |         { | ||||||
|             success = false; |             success = false; | ||||||
|             message = "获取排行榜失败,原因:" + error.getMessage(); |             message = "获取排行榜失败,原因:" + error.getMessage(); | ||||||
|  |  | ||||||
|             error.printStackTrace(); |             logger.error( message, error ); | ||||||
|         } |  | ||||||
|         catch ( ClassNotFoundException error ) |  | ||||||
|         { |  | ||||||
|             success = false; |  | ||||||
|             message = "获取排行榜失败,原因:oracle驱动加载失败!" + error.getMessage(); |  | ||||||
|  |  | ||||||
|             error.printStackTrace(); |  | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         RankingListResponse response = new RankingListResponse( success, message, departmentCode, |         RankingListResponse response = new RankingListResponse( success, message, departmentCode, | ||||||
|   | |||||||
| @@ -1,8 +0,0 @@ | |||||||
|  |  | ||||||
|  |  | ||||||
| package com.cpic.xim.web.controllers.archievement; |  | ||||||
|  |  | ||||||
| public class CallerArchievementQueryResult |  | ||||||
| { |  | ||||||
|  |  | ||||||
| } |  | ||||||
| @@ -9,7 +9,7 @@ | |||||||
|  */ |  */ | ||||||
| package com.cpic.xim.web.controllers.archievement.RankingList; | package com.cpic.xim.web.controllers.archievement.RankingList; | ||||||
|  |  | ||||||
| import java.util.Vector; | import java.util.ArrayList; | ||||||
| import com.cpic.xim.utils.ranking.CallerRankingItem; | import com.cpic.xim.utils.ranking.CallerRankingItem; | ||||||
| import com.cpic.xim.web.controllers.QueryResult; | import com.cpic.xim.web.controllers.QueryResult; | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
| @@ -22,8 +22,8 @@ public class RankingListResponse extends QueryResult | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     public RankingListResponse( boolean success, String message, String departmentCode, String year, |     public RankingListResponse( boolean success, String message, String departmentCode, String year, | ||||||
|             String month, Vector<CallerRankingItem> attachingRateRankingList, |             String month, ArrayList<CallerRankingItem> attachingRateRankingList, | ||||||
|             Vector<CallerRankingItem> renewalRateRankingList) |             ArrayList<CallerRankingItem> renewalRateRankingList) | ||||||
|     { |     { | ||||||
|         super( success, message ); |         super( success, message ); | ||||||
|          |          | ||||||
| @@ -64,22 +64,22 @@ public class RankingListResponse extends QueryResult | |||||||
|         this.month = month; |         this.month = month; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public Vector<CallerRankingItem> getAttachingRateRankingList() |     public ArrayList<CallerRankingItem> getAttachingRateRankingList() | ||||||
|     { |     { | ||||||
|         return attachingRateRankingList; |         return attachingRateRankingList; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public void setAttachingRateRankingList( Vector<CallerRankingItem> attachingRateRankingList ) |     public void setAttachingRateRankingList( ArrayList<CallerRankingItem> attachingRateRankingList ) | ||||||
|     { |     { | ||||||
|         this.attachingRateRankingList = attachingRateRankingList; |         this.attachingRateRankingList = attachingRateRankingList; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public Vector<CallerRankingItem> getRenewalRateRankingList() |     public ArrayList<CallerRankingItem> getRenewalRateRankingList() | ||||||
|     { |     { | ||||||
|         return renewalRateRankingList; |         return renewalRateRankingList; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public void setRenewalRateRankingList( Vector<CallerRankingItem> renewalRateRankingList ) |     public void setRenewalRateRankingList( ArrayList<CallerRankingItem> renewalRateRankingList ) | ||||||
|     { |     { | ||||||
|         this.renewalRateRankingList = renewalRateRankingList; |         this.renewalRateRankingList = renewalRateRankingList; | ||||||
|     } |     } | ||||||
| @@ -98,9 +98,9 @@ public class RankingListResponse extends QueryResult | |||||||
|  |  | ||||||
|     // 车非融合率排行 |     // 车非融合率排行 | ||||||
|     @JsonProperty( "attachingRateRankingList" ) |     @JsonProperty( "attachingRateRankingList" ) | ||||||
|     private Vector<CallerRankingItem> attachingRateRankingList; |     private ArrayList<CallerRankingItem> attachingRateRankingList; | ||||||
|  |  | ||||||
|     // 续保率排行 |     // 续保率排行 | ||||||
|     @JsonProperty( "renewalRateRankingList" ) |     @JsonProperty( "renewalRateRankingList" ) | ||||||
|     private Vector<CallerRankingItem> renewalRateRankingList; |     private ArrayList<CallerRankingItem> renewalRateRankingList; | ||||||
| } | } | ||||||
|   | |||||||
| @@ -0,0 +1,43 @@ | |||||||
|  | /* | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-08-26 13:20:32 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/archievement/caller/CallerArchievementQueryRequest.java | ||||||
|  |  * @Description:  | ||||||
|  |  *  | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  |  */ | ||||||
|  | package com.cpic.xim.web.controllers.archievement.caller; | ||||||
|  |  | ||||||
|  | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
|  |  | ||||||
|  | public class CallerArchievementQueryRequest  | ||||||
|  | { | ||||||
|  |     public CallerArchievementQueryRequest() {} | ||||||
|  |  | ||||||
|  |     public String getCallerCode() | ||||||
|  |     { | ||||||
|  |         return callerCode; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setCallerCode( String callerCode ) | ||||||
|  |     { | ||||||
|  |         this.callerCode = callerCode; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String getCallName() | ||||||
|  |     { | ||||||
|  |         return callName; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setCallName( String callName ) | ||||||
|  |     { | ||||||
|  |         this.callName = callName; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @JsonProperty("callerCode") | ||||||
|  |     private String callerCode; | ||||||
|  |  | ||||||
|  |     @JsonProperty("callerName") | ||||||
|  |     private String callName; | ||||||
|  | } | ||||||
| @@ -0,0 +1,123 @@ | |||||||
|  | /* | ||||||
|  |  * @Author: Kane | ||||||
|  |  * @Date: 2023-06-06 17:35:54 | ||||||
|  |  * @LastEditors: Kane | ||||||
|  |  * @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/archievement/caller/CallerArchievementQueryResult.java | ||||||
|  |  * @Description:  | ||||||
|  |  *  | ||||||
|  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  |  */ | ||||||
|  | package com.cpic.xim.web.controllers.archievement.caller; | ||||||
|  |  | ||||||
|  | import com.cpic.xim.mybatis.pojo.MensualArchievementItem; | ||||||
|  | import com.cpic.xim.web.controllers.QueryResult; | ||||||
|  | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
|  | import java.util.ArrayList; | ||||||
|  |  | ||||||
|  | public class CallerArchievementQueryResult extends QueryResult | ||||||
|  | { | ||||||
|  |     /** | ||||||
|  |      *  | ||||||
|  |      * @param success | ||||||
|  |      * @param message | ||||||
|  |      * @param callerCode | ||||||
|  |      * @param callerName | ||||||
|  |      * @param totalArchievement | ||||||
|  |      * @param mensualArchievementList | ||||||
|  |      * @param insuranceRenewalRate | ||||||
|  |      * @param attachingRate | ||||||
|  |      */ | ||||||
|  |     public CallerArchievementQueryResult( boolean success, String message, String callerCode, | ||||||
|  |             String callerName, long totalArchievement, | ||||||
|  |             ArrayList<MensualArchievementItem> mensualArchievementList, String insuranceRenewalRate, | ||||||
|  |             String attachingRate) | ||||||
|  |     { | ||||||
|  |         super( success, message ); | ||||||
|  |         this.callerCode = callerCode; | ||||||
|  |         this.callerName = callerName; | ||||||
|  |         this.totalArchievement = totalArchievement; | ||||||
|  |         this.mensualArchievementList = mensualArchievementList; | ||||||
|  |         this.insuranceRenewalRate = insuranceRenewalRate; | ||||||
|  |         this.attachingRate = attachingRate; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @JsonProperty("callerCode") | ||||||
|  |     String callerCode; | ||||||
|  |  | ||||||
|  |     public String getCallerCode() | ||||||
|  |     { | ||||||
|  |         return callerCode; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setCallerCode( String callerCode ) | ||||||
|  |     { | ||||||
|  |         this.callerCode = callerCode; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String getCallerName() | ||||||
|  |     { | ||||||
|  |         return callerName; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setCallerName( String callerName ) | ||||||
|  |     { | ||||||
|  |         this.callerName = callerName; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public long getTotalArchievement() | ||||||
|  |     { | ||||||
|  |         return totalArchievement; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setTotalArchievement( long totalArchievement ) | ||||||
|  |     { | ||||||
|  |         this.totalArchievement = totalArchievement; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public ArrayList<MensualArchievementItem> getMensualArchievementList() | ||||||
|  |     { | ||||||
|  |         return mensualArchievementList; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setMensualArchievementList( ArrayList<MensualArchievementItem> mensualArchievementList ) | ||||||
|  |     { | ||||||
|  |         this.mensualArchievementList = mensualArchievementList; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String getInsuranceRenewalRate() | ||||||
|  |     { | ||||||
|  |         return insuranceRenewalRate; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setInsuranceRenewalRate( String insuranceRenewalRate ) | ||||||
|  |     { | ||||||
|  |         this.insuranceRenewalRate = insuranceRenewalRate; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public String getAttachingRate() | ||||||
|  |     { | ||||||
|  |         return attachingRate; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     public void setAttachingRate( String attachingRate ) | ||||||
|  |     { | ||||||
|  |         this.attachingRate = attachingRate; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @JsonProperty("callerName") | ||||||
|  |     String callerName; | ||||||
|  |  | ||||||
|  |     @JsonProperty( "total_archievement" ) | ||||||
|  |     private long totalArchievement; // 总业绩 | ||||||
|  |  | ||||||
|  |     // 每月业绩列表 | ||||||
|  |     // 要保证数据是按照月份排序。 | ||||||
|  |     @JsonProperty( "mensual_archievement_list" ) | ||||||
|  |     private ArrayList<MensualArchievementItem> mensualArchievementList; | ||||||
|  |  | ||||||
|  |     @JsonProperty( "insurance_renewal_rate" ) | ||||||
|  |     private String insuranceRenewalRate; // 续保率 | ||||||
|  |  | ||||||
|  |     @JsonProperty( "attaching_rate" ) | ||||||
|  |     private String attachingRate; // 车非渗透率 | ||||||
|  | } | ||||||
| @@ -8,7 +8,7 @@ | |||||||
|  * Copyright (c) ${2022} by Kane, All Rights Reserved.  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package com.cpic.xim.web.controllers.archievement; | package com.cpic.xim.web.controllers.archievement.department; | ||||||
| 
 | 
 | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
| 
 | 
 | ||||||
| @@ -2,17 +2,20 @@ | |||||||
|  * @Author: Kane |  * @Author: Kane | ||||||
|  * @Date: 2023-03-16 09:32:53 |  * @Date: 2023-03-16 09:32:53 | ||||||
|  * @LastEditors: Kane |  * @LastEditors: Kane | ||||||
|  * @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/archievement/DepartmentArchievementQueryResult.java |  * @FilePath: /desktop_archievement_backend/src/main/java/com/cpic/xim/web/controllers/archievement/department/DepartmentArchievementQueryResult.java | ||||||
|  * @Description:  |  * @Description:  | ||||||
|  *  |  *  | ||||||
|  * Copyright (c) ${2022} by Kane, All Rights Reserved.  |  * Copyright (c) ${2022} by Kane, All Rights Reserved.  | ||||||
|  */ |  */ | ||||||
| 
 | 
 | ||||||
| package com.cpic.xim.web.controllers.archievement; | package com.cpic.xim.web.controllers.archievement.department; | ||||||
| 
 | 
 | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.List; | ||||||
| import java.util.Vector; | import java.util.Vector; | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | import com.cpic.xim.mybatis.pojo.MensualArchievementItem; | ||||||
| import com.cpic.xim.web.controllers.QueryResult; | import com.cpic.xim.web.controllers.QueryResult; | ||||||
|  | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
| 
 | 
 | ||||||
| /** | /** | ||||||
|  * 查询部门业绩返回结果。 |  * 查询部门业绩返回结果。 | ||||||
| @@ -20,9 +23,9 @@ import com.cpic.xim.web.controllers.QueryResult; | |||||||
|  */ |  */ | ||||||
| public class DepartmentArchievementQueryResult extends QueryResult | public class DepartmentArchievementQueryResult extends QueryResult | ||||||
| { | { | ||||||
|     DepartmentArchievementQueryResult() |     public DepartmentArchievementQueryResult() | ||||||
|     { |     { | ||||||
|         mensualArchievementList = new Vector<Long>(); |         mensualArchievementList = new ArrayList<MensualArchievementItem>(); | ||||||
|         advanceRewardGainers = new Vector<String>(); |         advanceRewardGainers = new Vector<String>(); | ||||||
|         leadingRewardGainers = new Vector<String>(); |         leadingRewardGainers = new Vector<String>(); | ||||||
|         backwardList = new Vector<String>(); |         backwardList = new Vector<String>(); | ||||||
| @@ -38,12 +41,12 @@ public class DepartmentArchievementQueryResult extends QueryResult | |||||||
|         this.totalArchievement = totalArchievement; |         this.totalArchievement = totalArchievement; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public Vector<Long> getMensualArchievementList() |     public List<MensualArchievementItem> getMensualArchievementList() | ||||||
|     { |     { | ||||||
|         return mensualArchievementList; |         return mensualArchievementList; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     public void setMensualArchievementList( Vector<Long> mensualArchievementList ) |     public void setMensualArchievementList( ArrayList<MensualArchievementItem> mensualArchievementList ) | ||||||
|     { |     { | ||||||
|         this.mensualArchievementList = mensualArchievementList; |         this.mensualArchievementList = mensualArchievementList; | ||||||
|     } |     } | ||||||
| @@ -119,7 +122,7 @@ public class DepartmentArchievementQueryResult extends QueryResult | |||||||
|     // 每月业绩列表 |     // 每月业绩列表 | ||||||
|     // 要保证数据是按照月份排序。 |     // 要保证数据是按照月份排序。 | ||||||
|     @JsonProperty( "mensual_archievement_list" ) |     @JsonProperty( "mensual_archievement_list" ) | ||||||
|     private Vector<Long> mensualArchievementList; |     private ArrayList<MensualArchievementItem> mensualArchievementList; | ||||||
| 
 | 
 | ||||||
|     @JsonProperty( "insurance_renewal_rate" ) |     @JsonProperty( "insurance_renewal_rate" ) | ||||||
|     private String insuranceRenewalRate; // 续保率 |     private String insuranceRenewalRate; // 续保率 | ||||||
| @@ -11,6 +11,7 @@ package com.cpic.xim.web.controllers.caller; | |||||||
|  |  | ||||||
| import com.fasterxml.jackson.annotation.JsonProperty; | import com.fasterxml.jackson.annotation.JsonProperty; | ||||||
|  |  | ||||||
|  | @SuppressWarnings("all") | ||||||
| public class QueryCallerRequest | public class QueryCallerRequest | ||||||
| { | { | ||||||
|     public QueryCallerRequest() {} |     public QueryCallerRequest() {} | ||||||
|   | |||||||
| @@ -4,18 +4,24 @@ | |||||||
|             <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} ### %msg%n" /> |             <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} ### %msg%n" /> | ||||||
|             <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" /> |             <ThresholdFilter level="trace" onMatch="ACCEPT" onMismatch="DENY" /> | ||||||
|         </Console> |         </Console> | ||||||
|         <RollingFile name="rolling_file" filename="./logs/app.log" |         <RollingFile name="rolling_file" filename="d:/logs/桌面霸屏/app.log" | ||||||
|             filePattern="./logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz"> |             filePattern="d:/logs/桌面霸屏/logs/$${date:yyyy-MM}/app-%d{MM-dd-yyyy}-%i.log.gz"> | ||||||
|             <PatternLayout pattern="%d{yyyy-MM-dd 'at' HH:mm:ss z} %-5level %class{36} %L %M - %msg%xEx%n"/> |             <PatternLayout> | ||||||
|             <SizeBasedTriggeringPolicy size="50MB" /> |                 <Pattern>[%t][%level][%d{HH:mm:ss.SSS}][%logger.%M{36}#%L] %msg%n</Pattern> | ||||||
|  |             </PatternLayout> | ||||||
|  |             <Policies> | ||||||
|  |                 <TimeBasedTriggeringPolicy interval="1" /> | ||||||
|  |                 <SizeBasedTriggeringPolicy size="20MB" /> | ||||||
|                 <DefaultRolloverStrategy max="20" /> |                 <DefaultRolloverStrategy max="20" /> | ||||||
|  |             </Policies> | ||||||
|         </RollingFile> |         </RollingFile> | ||||||
|     </Appenders> |     </Appenders> | ||||||
|     <Loggers> |     <Loggers> | ||||||
|         <Logger name="mylog" level="info" additivity="false"> |         <!-- <Logger name="mylog" level="info"> | ||||||
|  |             <AppenderRef ref="rolling_file" /> | ||||||
|  |         </Logger> --> | ||||||
|  |         <Root level="debug"> | ||||||
|             <AppenderRef ref="rolling_file" /> |             <AppenderRef ref="rolling_file" /> | ||||||
|         </Logger> |  | ||||||
|         <Root level="info"> |  | ||||||
|             <AppenderRef ref="Console" /> |             <AppenderRef ref="Console" /> | ||||||
|         </Root> |         </Root> | ||||||
|     </Loggers> |     </Loggers> | ||||||
|   | |||||||
| @@ -0,0 +1,4 @@ | |||||||
|  | jdbc.oracle.driver=oracle.jdbc.driver.OracleDriver | ||||||
|  | jdbc.oracle.xmcx1.url=jdbc:oracle:thin:@10.39.0.86:1521:xmcx1 | ||||||
|  | jdbc.oracle.xmcx1.username=desktop_archievement_admin | ||||||
|  | jdbc.oracle.xmcx1.password=Cpic123456 | ||||||
| @@ -0,0 +1,25 @@ | |||||||
|  | <?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.ArchievementMapper"> | ||||||
|  |     <select id="getDepartmentArchievement" statementType="CALLABLE" parameterType="java.util.HashMap">  | ||||||
|  |         call telsale_archievement_pkg.department_archievement( | ||||||
|  |             #{a_department_code, mode=IN, jdbcType=VARCHAR}, | ||||||
|  |             #{a_attaching_rate, mode=OUT, jdbcType=VARCHAR}, | ||||||
|  |             #{a_renewal_rate, mode=OUT, jdbcType=VARCHAR}, | ||||||
|  |             #{a_total, mode=OUT, jdbcType=INTEGER, javaType=Integer}, | ||||||
|  |             #{a_mensual_cur, mode=OUT, jdbcType=CURSOR, resultMap=MensualArchievementMapper}) | ||||||
|  |     </select> | ||||||
|  |     <select id="getCallerArchievement" statementType="CALLABLE" parameterType="java.util.HashMap"> | ||||||
|  |         call telsale_archievement_pkg.caller_archievement( | ||||||
|  |             #{a_caller_code, mode=IN, jdbcType=VARCHAR}, | ||||||
|  |             #{a_attaching_rate, mode=OUT, jdbcType=VARCHAR}, | ||||||
|  |             #{a_renewal_rate, mode=OUT, jdbcType=VARCHAR}, | ||||||
|  |             #{a_total, mode=OUT, jdbcType=INTEGER, javaType=Integer}, | ||||||
|  |             #{a_mensual_cur, mode=OUT, jdbcType=CURSOR, resultMap=MensualArchievementMapper}) | ||||||
|  |     </select> | ||||||
|  |  | ||||||
|  |     <resultMap id="MensualArchievementMapper" type="MensualArchievementItem"> | ||||||
|  |         <id property="month" column="mm" javaType="INT"/> | ||||||
|  |         <result property="premium" column="bf" /> | ||||||
|  |     </resultMap> | ||||||
|  | </mapper> | ||||||
| @@ -0,0 +1,22 @@ | |||||||
|  | <?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.RankingListMapper"> | ||||||
|  |     <select id="getRankingList" statementType="CALLABLE" parameterType="java.util.HashMap"> | ||||||
|  |         call telsale_archievement_pkg.caller_arch_ranking_list( | ||||||
|  |             #{a_department_code,mode=IN,jdbcType=VARCHAR}, | ||||||
|  |             #{a_year,mode=IN,jdbcType=VARCHAR}, | ||||||
|  |             #{a_month,mode=IN,jdbcType=VARCHAR}, | ||||||
|  |             #{a_attaching_ranking_list,mode=OUT,jdbcType=CURSOR, resultMap=AttachingRateRankingMap}, | ||||||
|  |             #{a_renewal_ranking_list,mode=OUT,jdbcType=CURSOR, resultMap=RenewalRateRankingMap}) | ||||||
|  |     </select> | ||||||
|  |     <resultMap id="AttachingRateRankingMap" type="CallerRankingItem"> | ||||||
|  |         <id property="index" column="rownum" jdbcType="INTEGER" javaType="int"/> | ||||||
|  |         <result property="callerName" column="caller_name" jdbcType="VARCHAR" javaType="String"/> | ||||||
|  |         <result property="appraiseValue" column="attaching_rate" jdbcType="VARCHAR" javaType="String"/> | ||||||
|  |     </resultMap> | ||||||
|  |     <resultMap id="RenewalRateRankingMap" type="CallerRankingItem"> | ||||||
|  |         <id property="index" column="rownum" jdbcType="INTEGER" javaType="int"/> | ||||||
|  |         <result property="callerName" column="caller_name" jdbcType="VARCHAR" javaType="String"/> | ||||||
|  |         <result property="appraiseValue" column="renewal_rate" jdbcType="VARCHAR" javaType="String"/> | ||||||
|  |     </resultMap> | ||||||
|  | </mapper> | ||||||
| @@ -0,0 +1,37 @@ | |||||||
|  | <?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.StaffMapper"> | ||||||
|  |      <select id="queryCpicStaff" resultMap="CpicXIMStaff" > | ||||||
|  |         SELECT ry.p13uid, | ||||||
|  |                ry.staff_code, | ||||||
|  |                ry.staff_name, | ||||||
|  |                bm.department_code, | ||||||
|  |                bm.department_name, | ||||||
|  |                ksh.section_office_code, | ||||||
|  |                ksh.section_office_name | ||||||
|  |           FROM idst0.rydm_t ry, | ||||||
|  |                idst0.ks_t   ksh, | ||||||
|  |                idst0.bm_t   bm | ||||||
|  |           WHERE ry.staff_code = #{staffCode,mode=IN} | ||||||
|  |           AND ry.department_code = bm.department_code | ||||||
|  |           AND ry.section_office_code = ksh.section_office_code | ||||||
|  |      </select> | ||||||
|  |      <resultMap id="CpicXIMStaff" type="com.cpic.xim.mybatis.pojo.CpicStaff"> | ||||||
|  |           <!-- <constructor> | ||||||
|  |                <arg column="p13uid"  name="p13uid"/> | ||||||
|  |                <arg column="staff_code"  name="staffCode"/> | ||||||
|  |                <arg column="staff_name"  name="staffName"/> | ||||||
|  |                <arg column="department_code"  name="departmentCode"/> | ||||||
|  |                <arg column="department_name"  name="departmentName"/> | ||||||
|  |                <arg column="section_office_code"  name="sectionOfficeCode"/> | ||||||
|  |                <arg column="section_office_name"  name="sectionOfficeName"/> | ||||||
|  |           </constructor> --> | ||||||
|  |           <id property="staffCode" column="staff_code"/> | ||||||
|  |           <result property="staffName" column="staff_name"/> | ||||||
|  |           <result property="p13UID" column="p13uid"/> | ||||||
|  |           <result property="departmentCode" column="department_code"/> | ||||||
|  |           <result property="departmentName" column="department_name"/> | ||||||
|  |           <result property="sectionOfficeCode" column="section_office_code"/> | ||||||
|  |           <result property="sectionOfficeName" column="section_office_name"/> | ||||||
|  |      </resultMap> | ||||||
|  | </mapper> | ||||||
| @@ -0,0 +1,29 @@ | |||||||
|  | <?xml version="1.0" encoding="UTF-8"?> | ||||||
|  | <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "https://mybatis.org/dtd/mybatis-3-config.dtd"> | ||||||
|  | <configuration> | ||||||
|  |     <properties resource="mybatis/jdbc.properties" /> | ||||||
|  |  | ||||||
|  |     <!-- 类型别名 --> | ||||||
|  |     <typeAliases> | ||||||
|  |         <package name="com.cpic.xim.mybatis.pojo" /> | ||||||
|  |         <package name="com.cpic.xim.utils.ranking" /> | ||||||
|  |     </typeAliases> | ||||||
|  |  | ||||||
|  |     <environments default="development"> | ||||||
|  |         <environment id="development"> | ||||||
|  |             <transactionManager type="JDBC" /> | ||||||
|  |             <dataSource type="POOLED"> | ||||||
|  |                 <property name="driver" value="${jdbc.oracle.driver}" /> | ||||||
|  |                 <property name="url" value="${jdbc.oracle.xmcx1.url}" /> | ||||||
|  |                 <property name="username" value="${jdbc.oracle.xmcx1.username}" /> | ||||||
|  |                 <property name="password" value="${jdbc.oracle.xmcx1.password}" /> | ||||||
|  |             </dataSource> | ||||||
|  |         </environment> | ||||||
|  |     </environments> | ||||||
|  |      | ||||||
|  |     <mappers> | ||||||
|  |         <!-- <mapper resource="mybatis/mapper/StaffMapper.xml" /> --> | ||||||
|  |         <mapper resource="mybatis/mapper/ArchievementMapper.xml" /> | ||||||
|  |         <mapper resource="mybatis/mapper/RankingListMapper.xml" /> | ||||||
|  |     </mappers> | ||||||
|  | </configuration> | ||||||
| @@ -9,58 +9,109 @@ | |||||||
|  */ |  */ | ||||||
| package com.cpic.xim.DesktopArchievement.test; | package com.cpic.xim.DesktopArchievement.test; | ||||||
|  |  | ||||||
| import java.sql.SQLException; | import static org.junit.Assert.assertNotNull; | ||||||
|  | import static org.junit.Assert.assertTrue; | ||||||
|  | import java.io.IOException; | ||||||
|  | import java.io.InputStream; | ||||||
|  | import java.util.ArrayList; | ||||||
|  | import java.util.HashMap; | ||||||
|  | import org.apache.ibatis.io.Resources; | ||||||
|  | import org.apache.ibatis.session.SqlSession; | ||||||
|  | import org.apache.ibatis.session.SqlSessionFactory; | ||||||
|  | import org.apache.ibatis.session.SqlSessionFactoryBuilder; | ||||||
| import org.junit.Test; | import org.junit.Test; | ||||||
|  | import org.slf4j.Logger; | ||||||
|  | import org.slf4j.LoggerFactory; | ||||||
|  | import com.cpic.xim.mybatis.mapper.ArchievementMapper; | ||||||
|  | import com.cpic.xim.mybatis.pojo.MensualArchievementItem; | ||||||
| import com.cpic.xim.utils.archievement.DepartmentArchievement; | import com.cpic.xim.utils.archievement.DepartmentArchievement; | ||||||
| import com.cpic.xim.utils.ranking.CallerRankingList; | import com.cpic.xim.utils.ranking.CallerRankingList; | ||||||
|  | import com.cpic.xim.mybatis.utils.MybatisUtils; | ||||||
|  |  | ||||||
| @SuppressWarnings( "all" ) | @SuppressWarnings( "all" ) | ||||||
| public class DesktopArchievementTest | public class DesktopArchievementTest | ||||||
| { | { | ||||||
|     @Test |     private static String configFilePath = "mybatis/mybatis-config.xml"; | ||||||
|     public void testQueryArchievement() |     private static Logger logger = LoggerFactory.getLogger( DesktopArchievementTest.class ); | ||||||
|     { |  | ||||||
|         try |  | ||||||
|         { |  | ||||||
|             DepartmentArchievement.queryDepartmentArchievement( "QDI" ); |  | ||||||
|         } |  | ||||||
|         catch ( SQLException error ) |  | ||||||
|         { |  | ||||||
|             System.out.println( error.getMessage() ); |  | ||||||
|         } |  | ||||||
|         catch ( ClassNotFoundException error ) |  | ||||||
|         { |  | ||||||
|             System.out.println( error.getMessage() ); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
|     public void testCallerRankingList() |     public void testCallerRankingList() | ||||||
|     { |     { | ||||||
|  |         CallerRankingList rankingList = null; | ||||||
|  |  | ||||||
|         try |         try | ||||||
|         { |         { | ||||||
|             CallerRankingList rankingList = |             rankingList = CallerRankingList.getCallerRankingList( "QDI", "2023", "06" ); | ||||||
|                     CallerRankingList.getCallerRankingList( "QDI", "2023", "05" ); |  | ||||||
|         } |         } | ||||||
|         catch ( SQLException error ) |         catch ( IOException error ) | ||||||
|         { |         { | ||||||
|             error.printStackTrace(); |             String message = "获取排行榜失败,原因:" + error.getMessage(); | ||||||
|  |  | ||||||
|  |             logger.error( message, error ); | ||||||
|         } |         } | ||||||
|         catch ( ClassNotFoundException error ) |  | ||||||
|  |         assertNotNull( rankingList ); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     public void testDepartmentArchievement() | ||||||
|     { |     { | ||||||
|             error.printStackTrace(); |         try | ||||||
|  |         { | ||||||
|  |             InputStream configFile = Resources.getResourceAsStream( configFilePath ); | ||||||
|  |             SqlSessionFactoryBuilder builder = new SqlSessionFactoryBuilder(); | ||||||
|  |             SqlSessionFactory factory = builder.build( configFile ); | ||||||
|  |             SqlSession session = factory.openSession(); | ||||||
|  |  | ||||||
|  |             ArchievementMapper mapper = session.getMapper( ArchievementMapper.class ); | ||||||
|  |             ArrayList<MensualArchievementItem> mensual = null; | ||||||
|  |             HashMap<String, Object> params = new HashMap<>(); | ||||||
|  |  | ||||||
|  |             params.put( "a_department_code", "QDI" ); | ||||||
|  |  | ||||||
|  |             mapper.getDepartmentArchievement( params ); | ||||||
|  |  | ||||||
|  |             mensual = (ArrayList<MensualArchievementItem>) params.get( "a_mensual_cur" ); | ||||||
|  |             Integer total = (Integer) params.get( "a_total" ); | ||||||
|  |  | ||||||
|  |             System.out.println( params.toString() ); | ||||||
|  |             System.out.println( mensual.toString() ); | ||||||
|  |  | ||||||
|  |             assertTrue( params.size() > 1 ); | ||||||
|  |         } | ||||||
|  |         catch ( IOException error ) | ||||||
|  |         { | ||||||
|  |             assert (false); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     @Test |     @Test | ||||||
|     public void testArray() |     public void testCallerArchievement() | ||||||
|     { |     { | ||||||
|         int[] num = |         try | ||||||
|         { 12, 3, 4, 5, 4, 45654,}; |  | ||||||
|  |  | ||||||
|         for ( int item : num ) |  | ||||||
|         { |         { | ||||||
|  |             SqlSession session = MybatisUtils.getSqlSession(); | ||||||
|  |             ArchievementMapper mapper = session.getMapper( ArchievementMapper.class ); | ||||||
|  |  | ||||||
|  |             ArrayList<MensualArchievementItem> mensual = null; | ||||||
|  |             HashMap<String, Object> params = new HashMap<>(); | ||||||
|  |  | ||||||
|  |             params.put( "a_caller_code", "5500065875" ); | ||||||
|  |  | ||||||
|  |             mapper.getCallerArchievement( params ); | ||||||
|  |  | ||||||
|  |             Object obj = params.get( "a_mensual_cur" ); | ||||||
|  |             mensual = (ArrayList<MensualArchievementItem>)params.get( "a_mensual_cur" ); | ||||||
|  |  | ||||||
|  |             System.out.println( params.toString() ); | ||||||
|  |             System.out.println( mensual.toString() ); | ||||||
|  |             System.out.println( obj.getClass()); | ||||||
|  |  | ||||||
|  |             assertTrue( params.size() > 1 ); | ||||||
|  |         } | ||||||
|  |         catch ( IOException error ) | ||||||
|  |         { | ||||||
|  |             assert (false); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|   | |||||||
							
								
								
									
										
											BIN
										
									
								
								文档/变更/2023-07-10.docx
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								文档/变更/2023-07-10.docx
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							
		Reference in New Issue
	
	Block a user