| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- CREATE DEFINER=`bi`@`%` PROCEDURE `BONUS_GX_DOWN`( `PRM_PERIOD_NUM` INT )
- BEGIN#Routine body goes here...
- DECLARE
- Done INT DEFAULT 0;
- DECLARE
- R1_USER_NAME VARCHAR ( 30 );
- DECLARE
- R1_REAL_NAME VARCHAR ( 50 );
- DECLARE
- R1_PARENT_USER_NAME VARCHAR ( 30 );
- DECLARE
- R1_PARENT_REAL_NAME VARCHAR ( 50 );
- DECLARE
- SHIJIDAISHU INT DEFAULT 0;
- /*DECLARE
- JICENGDAISHU INT DEFAULT 0;*/
- DECLARE
- JIJIANGDAISHU INT DEFAULT 0;
- DECLARE
- R1_ORI_BONUS_QY_BD DECIMAL ( 16, 3 );
- DECLARE
- R2_USER_NAME VARCHAR ( 30 );
- DECLARE
- R2_REAL_NAME VARCHAR ( 50 );
- DECLARE
- R3_USER_NAME VARCHAR ( 30 );
- DECLARE
- R3_REAL_NAME VARCHAR ( 50 );
- DECLARE
- R2_ORI_BONUS_QY_BD DECIMAL ( 16, 3 );
- DECLARE
- R2_BDYJ DECIMAL ( 16, 3 );
- DECLARE
- R3_BDYJ DECIMAL ( 16, 3 );
- DECLARE
- R2_PARENT_USER_NAME VARCHAR ( 30 );
- DECLARE
- R2_PARENT_REAL_NAME VARCHAR ( 50 );
- DECLARE
- R3_PARENT_USER_NAME VARCHAR ( 30 );
- DECLARE
- R3_PARENT_REAL_NAME VARCHAR ( 50 );
- DECLARE
- XIANAJIANGJIN DECIMAL ( 16, 3 );
- /* 声明游标 */
- DECLARE
- rs CURSOR FOR SELECT
- U.USER_NAME,
- U.REAL_NAME,
- B.ORI_BONUS_QY_BD,
- U2.USER_NAME AS PARENT_USER_NAME,
- U2.REAL_NAME AS PARENT_REAL_NAME
- FROM
- ar_calc_bonus B
- LEFT JOIN ar_user U ON U.ID = B.USER_ID
- LEFT JOIN ar_user_network_new N ON N.USER_ID = B.USER_ID
- LEFT JOIN ar_user U2 ON U2.ID = N.PARENT_UID
- WHERE
- B.PERIOD_NUM = PRM_PERIOD_NUM
- AND B.ORI_BONUS_QY_BD > 0 ;
- /* 异常处理 */
- DECLARE
- CONTINUE HANDLER FOR SQLSTATE '02000'
- SET Done = 1;
- /* 打开游标 */
- OPEN rs;
- DELETE
- FROM
- ek_temp_gx_xiana;
- /* 逐个取出当前记录LingQi字段的值,需要进行最大值的判断 */
- FETCH NEXT
- FROM
- rs INTO R1_USER_NAME,
- R1_REAL_NAME,
- R1_ORI_BONUS_QY_BD,
- R1_PARENT_USER_NAME,
- R1_PARENT_REAL_NAME;
- /* 遍历数据表 */
- REPEAT
-
- SET JIJIANGDAISHU = 1;
-
- -- SET JICENGDAISHU = 1;
-
- SET SHIJIDAISHU = 0;-- INSERT INTO ORI_BONUS_GX_CS(USER_NAME,REAL_NAME,PARENT_NAME,ORI_BONUS_GX) VALUES (USER_NAME,REAL_NAME,PARENT_NAME,ORI_BONUS_GX);
- REPEAT
-
- SET R2_USER_NAME = NULL;
- SELECT
- U.USER_NAME,
- U.REAL_NAME,
- IFNULL( B.ORI_BONUS_QY_BD, 0 ),
- ( XIAOYEJI(U.USER_NAME, PRM_PERIOD_NUM)) AS BDYJ,
- U2.USER_NAME AS PARENT_USER_NAME,
- U2.REAL_NAME AS PARENT_REAL_NAME INTO R2_USER_NAME,
- R2_REAL_NAME,
- R2_ORI_BONUS_QY_BD,
- R2_BDYJ,
- R2_PARENT_USER_NAME,
- R2_PARENT_REAL_NAME
- FROM
- ar_user U
- LEFT JOIN ar_calc_bonus B ON B.USER_ID = U.ID
- AND B.PERIOD_NUM = PRM_PERIOD_NUM
- LEFT JOIN ar_user_network_new N ON N.USER_ID = U.ID
- LEFT JOIN ar_user U2 ON U2.ID = N.PARENT_UID
- LEFT JOIN ar_perf_period P ON P.USER_ID = U.ID
- AND P.PERIOD_NUM = PRM_PERIOD_NUM
- WHERE
- U.USER_NAME = R1_PARENT_USER_NAME;
-
- SET Done = 0;
-
- SET SHIJIDAISHU = SHIJIDAISHU + 1;-- SET SHANGDAI = SHANGDAI + 1;
- IF
- R2_USER_NAME IS NOT NULL THEN
- IF
- JIJIANGDAISHU % 2 = 0 THEN
-
- SET XIANAJIANGJIN = R1_ORI_BONUS_QY_BD * 0.05;
- ELSE
- SET XIANAJIANGJIN = 0;
-
- END IF;
- /*IF
- R2_ORI_BONUS_QY_BD > 0 THEN
-
- SET JIJIANGDAISHU = JIJIANGDAISHU + 1;
-
- END IF;*/
- INSERT INTO ek_temp_gx_xiana ( `得奖人编号`, `得奖人姓名`, `给奖人编号`, `给奖人姓名`, `实际代数`, `计层代数`, `计奖代数`, `给奖人报团奖`, `得奖人报团奖`, `得奖人小业绩`, `奖金` )
- VALUES
- (
- R2_USER_NAME,
- R2_REAL_NAME,
- R1_USER_NAME,
- R1_REAL_NAME,
- SHIJIDAISHU,
- NULL,
- IF(R2_BDYJ < 980, NULL , JIJIANGDAISHU),
- R1_ORI_BONUS_QY_BD,
- R2_ORI_BONUS_QY_BD,
- R2_BDYJ,
- IF
- ( R2_BDYJ < 980, 0, XIANAJIANGJIN )
- );
- /*IF R1_ORI_BONUS_QY_BD IS NULL THEN
- SET JIJIANGDAISHU = JIJIANGDAISHU + 1;
- END IF;*/
- END IF;
- IF
- R2_BDYJ >= 980 THEN
- SET JIJIANGDAISHU = JIJIANGDAISHU + 1;
-
- END IF;
-
- SET R1_PARENT_USER_NAME = R2_PARENT_USER_NAME;
- UNTIL JIJIANGDAISHU >= 11
- OR R2_USER_NAME IS NULL
- END REPEAT;
- FETCH NEXT
- FROM
- rs INTO R1_USER_NAME,
- R1_REAL_NAME,
- R1_ORI_BONUS_QY_BD,
- R1_PARENT_USER_NAME,
- R1_PARENT_REAL_NAME;
- UNTIL Done
- END REPEAT;
- /* 关闭游标 */
- CLOSE rs;
- END
|