ProcessDefinitionController.java 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package com.qqflow.engine.domain.flow.controller;
  2. import com.qqflow.engine.common.PageResult;
  3. import com.qqflow.engine.common.Result;
  4. import com.qqflow.engine.common.util.SecurityUtils;
  5. import com.qqflow.engine.domain.flow.assembler.ProcessDefinitionAssembler;
  6. import com.qqflow.engine.domain.flow.dto.ProcessDefinitionDTO;
  7. import com.qqflow.engine.domain.flow.po.ProcessDefinition;
  8. import com.qqflow.engine.domain.flow.service.ProcessDefinitionService;
  9. import io.swagger.v3.oas.annotations.Operation;
  10. import io.swagger.v3.oas.annotations.tags.Tag;
  11. import jakarta.validation.Valid;
  12. import lombok.RequiredArgsConstructor;
  13. import org.springframework.security.access.prepost.PreAuthorize;
  14. import org.springframework.web.bind.annotation.DeleteMapping;
  15. import org.springframework.web.bind.annotation.GetMapping;
  16. import org.springframework.web.bind.annotation.PathVariable;
  17. import org.springframework.web.bind.annotation.PostMapping;
  18. import org.springframework.web.bind.annotation.PutMapping;
  19. import org.springframework.web.bind.annotation.RequestBody;
  20. import org.springframework.web.bind.annotation.RequestMapping;
  21. import org.springframework.web.bind.annotation.RequestParam;
  22. import org.springframework.web.bind.annotation.RestController;
  23. import java.util.List;
  24. @RestController
  25. @RequestMapping("/flow/definition")
  26. @RequiredArgsConstructor
  27. @Tag(name = "流程定义管理")
  28. @PreAuthorize("hasAnyRole('super_admin','flow_manager')")
  29. public class ProcessDefinitionController {
  30. private final ProcessDefinitionService processDefinitionService;
  31. private final ProcessDefinitionAssembler processDefinitionAssembler;
  32. @PostMapping
  33. @Operation(summary = "保存流程定义")
  34. public Result<Long> save(@RequestBody @Valid ProcessDefinitionDTO dto) {
  35. ProcessDefinition po = this.processDefinitionAssembler.buildFromSaveDto(dto, SecurityUtils.getUserId());
  36. return Result.ok(this.processDefinitionService.saveDefinition(po));
  37. }
  38. @PutMapping
  39. @Operation(summary = "更新流程定义")
  40. public Result<Long> update(@RequestBody @Valid ProcessDefinitionDTO dto) {
  41. ProcessDefinition po = this.processDefinitionAssembler.buildFromUpdateDto(dto);
  42. Long newId = this.processDefinitionService.updateDefinition(po);
  43. return Result.ok(newId);
  44. }
  45. @DeleteMapping("/{id}")
  46. @Operation(summary = "删除流程定义")
  47. public Result<Void> delete(@PathVariable Long id) {
  48. this.processDefinitionService.deleteDefinition(id);
  49. return Result.ok();
  50. }
  51. @GetMapping("/{id}")
  52. @Operation(summary = "流程定义详情")
  53. @PreAuthorize("isAuthenticated()")
  54. public Result<ProcessDefinitionDTO> getById(@PathVariable Long id) {
  55. return Result.ok(this.processDefinitionService.getById(id));
  56. }
  57. @GetMapping("/page")
  58. @Operation(summary = "流程定义分页列表")
  59. public Result<PageResult<ProcessDefinitionDTO>> page(
  60. @RequestParam(defaultValue = "1") Integer pageNum,
  61. @RequestParam(defaultValue = "10") Integer pageSize,
  62. @RequestParam(required = false) String processCode,
  63. @RequestParam(required = false) String processName,
  64. @RequestParam(required = false) Integer status) {
  65. return Result.ok(this.processDefinitionService.page(pageNum, pageSize, processCode, processName, status));
  66. }
  67. @PostMapping("/{id}/publish")
  68. @Operation(summary = "发布流程定义")
  69. public Result<Void> publish(@PathVariable Long id) {
  70. this.processDefinitionService.publish(id);
  71. return Result.ok();
  72. }
  73. @PostMapping("/{id}/stop")
  74. @Operation(summary = "停用流程定义")
  75. public Result<Void> stop(@PathVariable Long id) {
  76. this.processDefinitionService.stop(id);
  77. return Result.ok();
  78. }
  79. @PostMapping("/{id}/enable")
  80. @Operation(summary = "启用流程定义")
  81. public Result<Void> enable(@PathVariable Long id) {
  82. this.processDefinitionService.enable(id);
  83. return Result.ok();
  84. }
  85. @GetMapping("/list-enabled")
  86. @Operation(summary = "启用中的流程定义列表")
  87. @PreAuthorize("isAuthenticated()")
  88. public Result<List<ProcessDefinitionDTO>> listEnabled() {
  89. return Result.ok(this.processDefinitionService.listEnabled());
  90. }
  91. }