TriggerController.java 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. package jnpf.flowable.controller;
  2. import cn.hutool.core.collection.CollectionUtil;
  3. import cn.hutool.core.util.ObjectUtil;
  4. import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
  5. import io.swagger.v3.oas.annotations.tags.Tag;
  6. import jnpf.base.ActionResult;
  7. import jnpf.base.UserInfo;
  8. import jnpf.flowable.entity.TemplateJsonEntity;
  9. import jnpf.flowable.entity.TemplateNodeEntity;
  10. import jnpf.flowable.enums.NodeEnum;
  11. import jnpf.flowable.model.trigger.TriggerDataFo;
  12. import jnpf.flowable.model.trigger.TriggerDataModel;
  13. import jnpf.flowable.model.trigger.TriggerModel;
  14. import jnpf.flowable.service.TemplateJsonService;
  15. import jnpf.flowable.service.TemplateNodeService;
  16. import jnpf.flowable.util.TriggerUtil;
  17. import jnpf.workflow.service.TriggerApi;
  18. import lombok.extern.slf4j.Slf4j;
  19. import org.springframework.beans.factory.annotation.Autowired;
  20. import org.springframework.web.bind.annotation.PostMapping;
  21. import org.springframework.web.bind.annotation.RequestBody;
  22. import org.springframework.web.bind.annotation.RequestMapping;
  23. import org.springframework.web.bind.annotation.RestController;
  24. import java.util.List;
  25. import java.util.stream.Collectors;
  26. /**
  27. * 类的描述
  28. *
  29. * @author JNPF@YinMai Info. Co., Ltd
  30. * @version 5.0.x
  31. * @since 2024/9/11 10:39
  32. */
  33. @Tag(name = "流程触发", description = "trigger")
  34. @RestController
  35. @RequestMapping("/api/workflow/trigger")
  36. @Slf4j
  37. public class TriggerController implements TriggerApi {
  38. @Autowired
  39. private TriggerUtil triggerUtil;
  40. @Autowired
  41. private TemplateNodeService templateNodeService;
  42. @Autowired
  43. private TemplateJsonService templateJsonService;
  44. /**
  45. * 任务流程触发
  46. *
  47. * @param model 参数
  48. */
  49. @PostMapping("/Execute")
  50. public ActionResult execute(@RequestBody TriggerModel model) throws Exception {
  51. for (TriggerDataModel dataModel : model.getDataList()) {
  52. try {
  53. triggerUtil.handleTrigger(dataModel, model.getUserInfo());
  54. } catch (Exception e) {
  55. log.error("触发异常", e);
  56. // triggerUtil.createErrorRecord();
  57. }
  58. }
  59. return ActionResult.success();
  60. }
  61. /**
  62. * 定时触发
  63. *
  64. * @param triggerModel 参数
  65. */
  66. @PostMapping("/TimeExecute")
  67. public ActionResult timeExecute(@RequestBody TriggerModel triggerModel) {
  68. try {
  69. triggerUtil.handleTimeTrigger(triggerModel);
  70. } catch (Exception e) {
  71. log.error("定时触发异常", e);
  72. // triggerUtil.createErrorRecord();
  73. }
  74. return ActionResult.success();
  75. }
  76. /**
  77. * 通知触发
  78. *
  79. * @param triggerModel 参数
  80. */
  81. @PostMapping("/MsgExecute")
  82. public ActionResult msgExecute(@RequestBody TriggerModel triggerModel) {
  83. String msgId = triggerModel.getId();
  84. UserInfo userInfo = triggerModel.getUserInfo();
  85. QueryWrapper<TemplateNodeEntity> queryWrapper = new QueryWrapper<>();
  86. queryWrapper.lambda().eq(TemplateNodeEntity::getNodeType, NodeEnum.noticeTrigger.getType())
  87. .eq(TemplateNodeEntity::getFormId, msgId);
  88. List<TemplateNodeEntity> triggerNodeList = templateNodeService.list(queryWrapper);
  89. if (CollectionUtil.isNotEmpty(triggerNodeList)) {
  90. List<String> flowIds = triggerNodeList.stream().map(TemplateNodeEntity::getFlowId).distinct().collect(Collectors.toList());
  91. QueryWrapper<TemplateJsonEntity> wrapper = new QueryWrapper<>();
  92. wrapper.lambda().eq(TemplateJsonEntity::getState, 1).in(TemplateJsonEntity::getId, flowIds);
  93. List<TemplateJsonEntity> jsonEntityList = templateJsonService.list(wrapper);
  94. for (TemplateNodeEntity triggerNode : triggerNodeList) {
  95. String flowId = triggerNode.getFlowId();
  96. TemplateJsonEntity jsonEntity = jsonEntityList.stream().filter(e -> ObjectUtil.equals(e.getId(), flowId)).findFirst().orElse(null);
  97. if (null == jsonEntity) {
  98. continue;
  99. }
  100. try {
  101. triggerUtil.msgTrigger(triggerNode, userInfo);
  102. } catch (Exception e) {
  103. log.error("通知触发异常", e);
  104. // triggerUtil.createErrorRecord();
  105. }
  106. }
  107. }
  108. return ActionResult.success();
  109. }
  110. @Override
  111. public List<TriggerDataModel> getTriggerDataModel(TriggerDataFo fo) {
  112. return triggerUtil.getTriggerDataModel(fo);
  113. }
  114. }