update_task_and_subtask.sql 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. CREATE OR REPLACE PROCEDURE update_task_and_subtask(
  2. IN p_biz_id bigint,
  3. IN p_bizType VARCHAR
  4. )
  5. LANGUAGE plpgsql
  6. AS $$
  7. BEGIN
  8. IF p_bizType = 'dataBizProcess' THEN
  9. RAISE NOTICE 'Starting dataBizProcess';
  10. -- 检查 subtask 状态 --失败场景暂时不更新上层任务
  11. -- PERFORM 1 FROM algorithm_biz_process WHERE subtaskId = p_biz_id AND status = '3';
  12. -- IF FOUND THEN
  13. -- 如果有一个状态是3(失败),更新 algorithm_subtask 表为3(失败)
  14. -- UPDATE algorithm_subtask
  15. -- SET status = 3
  16. -- WHERE id = p_biz_id;
  17. -- ELSE
  18. -- 如果algorithm_biz_process所有状态都是2(成功),更新 algorithm_subtask 表为2(成功)
  19. PERFORM 1 FROM algorithm_biz_process WHERE status <> '2' AND sub_task_id = ( SELECT sub_task_id FROM algorithm_biz_process WHERE id = p_biz_id) ;
  20. IF NOT FOUND THEN
  21. UPDATE algorithm_subtask
  22. SET status = '2'
  23. WHERE id = ( SELECT sub_task_id FROM algorithm_biz_process WHERE id = p_biz_id);
  24. END IF;
  25. -- 如果algorithm_subtask表所有状态都是2(成功),更新 algorithm_task 表为2(成功)
  26. PERFORM 1 FROM algorithm_subtask WHERE status <> '2' AND task_id = (select task_id FROM algorithm_subtask WHERE id = (SELECT sub_task_id FROM algorithm_biz_process WHERE id = p_biz_id));
  27. IF NOT FOUND THEN
  28. UPDATE algorithm_task
  29. SET status = '2'
  30. WHERE id = (SELECT task_id FROM algorithm_subtask WHERE id = (SELECT sub_task_id FROM algorithm_biz_process WHERE id = p_biz_id));
  31. END IF;
  32. --END IF;
  33. ELSIF p_bizType = 'dataProcess' THEN
  34. RAISE NOTICE 'Starting dataProcess';
  35. -- 如果algorithm_data_process所有状态都是2(成功),更新 algorithm_subtask 表为2(成功)
  36. PERFORM 1 FROM algorithm_data_process WHERE status <> '2' AND sub_task_id = ( SELECT sub_task_id FROM algorithm_data_process WHERE id = p_biz_id);
  37. IF NOT FOUND THEN
  38. UPDATE algorithm_subtask
  39. SET status = '2'
  40. WHERE id = ( SELECT sub_task_id FROM algorithm_data_process WHERE id = p_biz_id);
  41. END IF;
  42. -- 如果algorithm_subtask表所有状态都是2(成功),更新 algorithm_task 表为2(成功)
  43. PERFORM 1 FROM algorithm_subtask WHERE status <> '2' AND task_id = (SELECT task_id FROM algorithm_subtask WHERE id = (SELECT sub_task_id FROM algorithm_data_process WHERE id = p_biz_id));
  44. IF NOT FOUND THEN
  45. UPDATE algorithm_task
  46. SET status = '2'
  47. WHERE id = (SELECT task_id FROM algorithm_subtask WHERE id = (SELECT sub_task_id FROM algorithm_data_process WHERE id = p_biz_id));
  48. END IF;
  49. END IF;
  50. END;
  51. $$;