DELIMITER //

CREATE OR REPLACE PROCEDURE bpm_sign_todo (
  IN p_token VARCHAR(100)
)
/*
  Function   : 配合 amis 的 bpm, 取得 [待辦事項清單]
  Description: 所有目前正在等待 user 簽核的 flow  
  Build Date : 2022/11/16
  
  Modify History
    Item Who        Date       Modify Docs
    ==== ========== ========== ================================================
    1    Michael    2022/11/16
    2    Michael    2022/11/28 新增 assign_to 的指派條件
	
*/
BEGIN
  -- token 轉 userid
  DECLARE v_userid VARCHAR(20);

  -- 根據傳入的 token 取得 userid, 並會判斷 token 是否仍有效(無效傳回空白)
  SELECT checktoken(p_token) INTO v_userid;
  
  main_block: BEGIN
	  IF v_userid = '' THEN 
	    LEAVE main_block;  -- 結束程序
	  END IF;
	
	  -- 回傳狀態
	  SELECT 0 AS code, 'ok' AS msg;
	
	  SELECT 
	    b.functiontag, b.flow_name, a.sourceid, a.sourceid AS billno, 
	    a.sign_note, d.departmentcname, a.signerid, p.personcname, 
	    a.stepName, cloud_addtime(a.create_date) AS create_date, a.flow_level
	  FROM bpm_flow_sign A
	  LEFT JOIN bpm_list B ON A.flow_id = B.flow_id 
	  LEFT JOIN basperson P ON A.signerid = P.personid
	  LEFT JOIN basdepartment D ON D.departmentid = P.departmentid
	  WHERE a.sign_status = 'P'  -- 目前簽核關卡
	  AND IFNULL(a.assign_to, '') = 'Y'      -- 解決同一關多人時的指派機制
	  AND a.signerid = v_userid;
  
  END;
END //

DELIMITER ;