WorkflowMonitorController.java 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209
  1. package jnpf.flowable.controller;
  2. import cn.dev33.satoken.annotation.SaCheckPermission;
  3. import cn.hutool.core.util.ObjectUtil;
  4. import io.swagger.v3.oas.annotations.Operation;
  5. import io.swagger.v3.oas.annotations.tags.Tag;
  6. import jnpf.base.ActionResult;
  7. import jnpf.base.entity.SystemEntity;
  8. import jnpf.base.vo.PageListVO;
  9. import jnpf.base.vo.PaginationVO;
  10. import jnpf.constant.MsgCode;
  11. import jnpf.exception.WorkFlowException;
  12. import jnpf.flowable.model.monitor.MonitorModel;
  13. import jnpf.flowable.model.monitor.MonitorVo;
  14. import jnpf.flowable.model.task.*;
  15. import jnpf.flowable.service.TaskService;
  16. import jnpf.flowable.util.OperatorUtil;
  17. import jnpf.flowable.util.ServiceUtil;
  18. import jnpf.permission.entity.UserEntity;
  19. import jnpf.permission.model.authorize.AuthorizeVO;
  20. import jnpf.util.JsonUtil;
  21. import lombok.RequiredArgsConstructor;
  22. import org.springframework.beans.factory.annotation.Autowired;
  23. import org.springframework.web.bind.annotation.*;
  24. import java.util.LinkedList;
  25. import java.util.List;
  26. import java.util.stream.Collectors;
  27. /**
  28. * 流程监控
  29. *
  30. * @author JNPF@YinMai Info. Co., Ltd
  31. * @version 5.0.x
  32. * @since 2024/5/15 10:15
  33. */
  34. @Tag(name = "流程监控", description = "Monitor")
  35. @RestController
  36. @RequestMapping("/api/workflow/monitor")
  37. @RequiredArgsConstructor
  38. public class WorkflowMonitorController {
  39. @Autowired
  40. private TaskService taskService;
  41. @Autowired
  42. private ServiceUtil serviceUtil;
  43. @Autowired
  44. private OperatorUtil operatorUtil;
  45. /**
  46. * 监控列表
  47. *
  48. * @param pagination 分页参数
  49. */
  50. @Operation(summary = "流程监控列表")
  51. @GetMapping
  52. public ActionResult<PageListVO<MonitorVo>> list(TaskPagination pagination) {
  53. List<MonitorVo> list = taskService.getMonitorList(pagination);
  54. List<UserEntity> userList = serviceUtil.getUserName(list.stream().map(MonitorVo::getCreatorUser).collect(Collectors.toList()));
  55. List<SystemEntity> systemList = serviceUtil.getSystemList(list.stream().map(MonitorVo::getSystemName).collect(Collectors.toList()));
  56. List<MonitorVo> voList = new LinkedList<>();
  57. for (MonitorVo vo : list) {
  58. UserEntity user = userList.stream().filter(t -> t.getId().equals(vo.getCreatorUser())).findFirst().orElse(null);
  59. vo.setCreatorUser(user != null ? user.getRealName() + "/" + user.getAccount() : "");
  60. SystemEntity system = systemList.stream().filter(t -> t.getId().equals(vo.getSystemName())).findFirst().orElse(null);
  61. vo.setSystemName(system != null ? system.getFullName() : "");
  62. if (ObjectUtil.equals(vo.getIsFile(), 0)) {
  63. vo.setIsFile("否");
  64. } else if (ObjectUtil.equals(vo.getIsFile(), 1)) {
  65. vo.setIsFile("是");
  66. } else {
  67. vo.setIsFile("");
  68. }
  69. voList.add(vo);
  70. }
  71. PaginationVO paginationVO = JsonUtil.getJsonToBean(pagination, PaginationVO.class);
  72. return ActionResult.page(voList, paginationVO);
  73. }
  74. /**
  75. * 批量删除流程监控
  76. *
  77. * @param model 参数
  78. */
  79. @Operation(summary = "批量删除流程监控")
  80. @DeleteMapping
  81. @SaCheckPermission(value = {"workFlow.flowMonitor"})
  82. public ActionResult delete(@RequestBody MonitorModel model) throws Exception {
  83. taskService.deleteBatch(model.getIds());
  84. return ActionResult.success(MsgCode.SU003.get());
  85. }
  86. /**
  87. * 判断是否存在异步子流程
  88. *
  89. * @param id 任务主键
  90. */
  91. @Operation(summary = "判断是否存在异步子流程")
  92. @GetMapping("/AnySubFlow/{id}")
  93. public ActionResult pause(@PathVariable("id") String id) {
  94. return ActionResult.success(taskService.checkAsync(id));
  95. }
  96. /**
  97. * 暂停
  98. *
  99. * @param id 主键
  100. * @param flowModel 参数
  101. */
  102. @Operation(summary = "暂停")
  103. @PostMapping("/Pause/{id}")
  104. @SaCheckPermission(value = {"workFlow.flowMonitor"})
  105. public ActionResult<String> pause(@PathVariable("id") String id, @RequestBody FlowModel flowModel) throws WorkFlowException {
  106. taskService.pause(id, flowModel, true);
  107. operatorUtil.handleTaskStatus();
  108. return ActionResult.success(MsgCode.WF074.get());
  109. }
  110. /**
  111. * 恢复
  112. *
  113. * @param id 主键
  114. * @param flowModel 参数
  115. */
  116. @Operation(summary = "恢复")
  117. @PostMapping("/Reboot/{id}")
  118. @SaCheckPermission(value = {"workFlow.flowMonitor"})
  119. public ActionResult<String> reboot(@PathVariable("id") String id, @RequestBody FlowModel flowModel) throws WorkFlowException {
  120. taskService.pause(id, flowModel, false);
  121. operatorUtil.handleTaskStatus();
  122. return ActionResult.success(MsgCode.WF016.get());
  123. }
  124. /**
  125. * 终止
  126. *
  127. * @param id 任务主键
  128. * @param flowModel 参数
  129. */
  130. @Operation(summary = "终止")
  131. @PostMapping("/Cancel/{id}")
  132. @SaCheckPermission(value = {"workFlow.flowMonitor"})
  133. public ActionResult<String> cancel(@PathVariable("id") String id, @RequestBody FlowModel flowModel) throws WorkFlowException {
  134. taskService.cancel(id, flowModel, true);
  135. operatorUtil.handleTaskStatus();
  136. return ActionResult.success(MsgCode.SU009.get());
  137. }
  138. /**
  139. * 复活
  140. *
  141. * @param id 任务主键
  142. * @param flowModel 参数
  143. */
  144. @Operation(summary = "复活")
  145. @PostMapping("/Activate/{id}")
  146. @SaCheckPermission(value = {"workFlow.flowMonitor"})
  147. public ActionResult<String> activate(@PathVariable("id") String id, @RequestBody FlowModel flowModel) throws WorkFlowException {
  148. taskService.cancel(id, flowModel, false);
  149. operatorUtil.handleTaskStatus();
  150. return ActionResult.success(MsgCode.WF013.get());
  151. }
  152. /**
  153. * 指派
  154. *
  155. * @param id 主键
  156. * @param flowModel 参数
  157. */
  158. @Operation(summary = "指派")
  159. @PostMapping("/Assign/{id}")
  160. @SaCheckPermission(value = {"workFlow.flowMonitor"})
  161. public ActionResult<String> assign(@PathVariable("id") String id, @RequestBody FlowModel flowModel) throws WorkFlowException {
  162. taskService.assign(id, flowModel);
  163. operatorUtil.handleOperator();
  164. return ActionResult.success(MsgCode.WF010.get());
  165. }
  166. /**
  167. * 获取我的待办
  168. *
  169. * @return
  170. */
  171. @Operation(summary = "获取我的待办")
  172. @PostMapping("/FlowTodoCount")
  173. public ActionResult getFlowTodoCount(@RequestBody TaskTo taskTo) {
  174. AuthorizeVO authorize = serviceUtil.getAuthorizeByUser();
  175. taskTo.setModuleList(authorize.getModuleList());
  176. TaskTo vo = taskService.getFlowTodoCount(taskTo);
  177. return ActionResult.success(vo);
  178. }
  179. /**
  180. * 获取待办事项
  181. *
  182. * @return
  183. */
  184. @Operation(summary = "获取待办事项")
  185. @GetMapping("/FlowTodo")
  186. public ActionResult getFlowTodo(@RequestParam("type") String type) {
  187. TaskPagination pagination = new TaskPagination();
  188. pagination.setDelegateType(true);
  189. pagination.setPageSize(10L);
  190. pagination.setCurrentPage(1L);
  191. pagination.setCategory(type);
  192. FlowTodoVO flowTodo = taskService.getFlowTodo(pagination);
  193. return ActionResult.success(flowTodo);
  194. }
  195. }