BEGIN DECLARE postUuid VARCHAR(40); DECLARE post VARCHAR(40); SELECT t2.user_id INTO postUuid FROM ( SELECT IF(e.post_user_id IS NULL, d.user_uuid, e.post_user_id) AS user_uuid FROM ( SELECT b.uuid AS reception_uuid FROM ( SELECT b.biz_id FROM bpm_process_instance a INNER JOIN biz_factoring_reception b ON a.biz_uuid = b.uuid AND b.sys_status = 1 WHERE a.sys_status = 1 AND a.instance_id = instanceId ) t INNER JOIN biz_factoring_reception b ON t.biz_id = b.biz_id AND b.sys_status = 1 WHERE b.receive_file_type = 0 ORDER BY b.receive_no ASC LIMIT 1 ) a INNER JOIN bpm_process_instance b ON a.reception_uuid = b.biz_uuid AND b.sys_status = 1 INNER JOIN bpm_activity c ON b.instance_id = c.instance_id AND c.ACTIVITY_ID = ‘o_42‘ AND c.sys_status = 1 INNER JOIN bpm_task_user d ON c.task_id = d.task_id AND d.sys_status = 1 LEFT JOIN biz_post_assign_info e ON d.user_uuid = e.leave_user_id AND e.post_start_date <= ‘2019-04-01‘ AND e.post_end_date >= ‘2019-04-01‘ AND e.sys_status = 1 ) t1 INNER JOIN sys_user t2 ON t1.user_uuid = t2.uuid AND t2.sys_status = 1; IF postUuid IS NOT NULL THEN SET post = postUuid; SELECT IF ( COUNT(a.post_user_id)!=1, ‘flag‘, a.post_user_id ) INTO post FROM biz_post_assign_info a,sys_user b WHERE a.post_start_date <= ‘2019-04-01‘ AND a.post_end_date >= ‘2019-04-01‘ AND a.leave_user_id = b.uuid AND b.user_id = post AND a.sys_status = 1 AND b.sys_status = 1; IF post != ‘flag‘ THEN REPEAT SELECT IF ( COUNT(post_user_id) != 1, ‘flag‘, post_user_id ) INTO post FROM biz_post_assign_info WHERE post_start_date <= ‘2019-04-01‘ AND post_end_date >= ‘2019-04-01‘ AND leave_user_id = post; IF post != ‘flag‘ THEN SET postUuid = post; END IF; UNTIL post = ‘flag‘ END REPEAT; SELECT user_id INTO postUuid FROM sys_user WHERE uuid = postUuid; END IF; END IF; RETURN postUuid; END
原文:https://www.cnblogs.com/xiaowoniulx/p/10711253.html