DDDelegate.java 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. package com.malk.sdzl.delegate;
  2. import com.malk.sdzl.service.PayService;
  3. import com.malk.delegate.DDEvent;
  4. import lombok.extern.slf4j.Slf4j;
  5. import org.springframework.beans.factory.annotation.Autowired;
  6. import org.springframework.context.annotation.Primary;
  7. import org.springframework.scheduling.annotation.Async;
  8. import org.springframework.stereotype.Service;
  9. /**
  10. * OA审批事件 [主项目也有实现, 添加 @Primary 优先注入主项目实现]
  11. * -
  12. * 取消方案: 撤销和拒绝流程不继续执行连接器, 因此不使用连接器与轮询审批记录方案 [低效而且占用较高钉钉api调次数];
  13. * 优化方案: 通过事件订阅实现实时同步所有审批状态, 定时查询钉钉回调失败记录 [配置钉钉事件Delegate, 添加定时任务]
  14. */
  15. @Slf4j
  16. @Service
  17. @Primary
  18. public class DDDelegate implements DDEvent {
  19. @Autowired
  20. PayService payService;
  21. // 审批任务回调执行业务逻辑
  22. @Async
  23. @Override
  24. public void executeEvent_Task_Finish(String processInstanceId, String processCode, boolean isAgree, String remark) {
  25. log.info("executeEvent_Task_Finish");
  26. }
  27. @Async
  28. @Override
  29. public void executeEvent_Task_Start(String processInstanceId, String processCode) {
  30. log.info("executeEvent_Task_Start");
  31. }
  32. @Async
  33. @Override
  34. public void executeEvent_Task_Redirect(String processInstanceId, String processCode) {
  35. log.info("executeEvent_Task_Redirect");
  36. }
  37. @Async
  38. @Override
  39. public void executeEvent_Instance_Start(String processInstanceId, String processCode) {
  40. log.info("executeEvent_Instance_Start");
  41. }
  42. // 审批实例回调执行业务逻辑
  43. @Async
  44. @Override
  45. public void executeEvent_Instance_Finish(String processInstanceId, String processCode, boolean isAgree, boolean isTerminate, String staffId) {
  46. log.info("executeEvent_Instance_Finish");
  47. String approveResult = isAgree ? "agree" : "refuse";
  48. // if (isTerminate) approveResult = "terminated";
  49. if (isAgree){
  50. log.info("开始执行回调:{}",processInstanceId);
  51. // payService.synchronousAndPush(processInstanceId);
  52. }
  53. log.info("审批实例回调执行业务逻辑, {}", approveResult);
  54. }
  55. }