Ludc
2025-11-18 17925215d37dd97d744c9296b185aeb16d3e44fb
Source/UBCS/ubcs-ops/ubcs-flow/src/main/java/com/vci/ubcs/flow/engine/controller/FlowManagerController.java
@@ -18,6 +18,7 @@
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import com.vci.ubcs.common.validator.ComprehensiveFileValidator;
import com.vci.ubcs.flow.engine.entity.FlowProcess;
import com.vci.ubcs.flow.engine.service.FlowEngineService;
import io.swagger.annotations.Api;
@@ -31,6 +32,7 @@
import org.springblade.core.tool.support.Kv;
import org.springblade.core.tool.utils.Func;
import com.vci.ubcs.flow.engine.constant.FlowEngineConstant;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
@@ -44,18 +46,23 @@
 */
@NonDS
@RestController
@RequestMapping("manager")
@RequestMapping("/manager")
@AllArgsConstructor
@Api(value = "流程管理接口", tags = "流程管理接口")
//@PreAuth(RoleConstant.HAS_ROLE_ADMINISTRATOR)
public class FlowManagerController {
   private final FlowEngineService flowEngineService;
   /**
    * 文件安全检查
    */
   @Autowired
   private ComprehensiveFileValidator fileValidator;
   /**
    * 分页
    */
   @GetMapping("list")
   @GetMapping("/list")
   @ApiOperationSupport(order = 1)
   @ApiOperation(value = "分页", notes = "传入流程类型")
   public R<IPage<FlowProcess>> list(@ApiParam("流程类型") String category, Query query, @RequestParam(required = false, defaultValue = "1") Integer mode) {
@@ -69,7 +76,7 @@
    * @param state     状态
    * @param processId 流程id
    */
   @PostMapping("change-state")
   @PostMapping("/change-state")
   @ApiOperationSupport(order = 2)
   @ApiOperation(value = "变更流程状态", notes = "传入state,processId")
   public R changeState(@RequestParam String state, @RequestParam String processId) {
@@ -82,7 +89,7 @@
    *
    * @param deploymentIds 部署流程id集合
    */
   @PostMapping("delete-deployment")
   @PostMapping("/delete-deployment")
   @ApiOperationSupport(order = 3)
   @ApiOperation(value = "删除部署流程", notes = "部署流程id集合")
   public R deleteDeployment(String deploymentIds) {
@@ -94,10 +101,15 @@
    *
    * @param file 流程文件
    */
   @PostMapping("check-upload")
   @PostMapping("/check-upload")
   @ApiOperationSupport(order = 4)
   @ApiOperation(value = "上传部署流程文件", notes = "传入文件")
   public R checkUpload(@RequestParam MultipartFile file) {
      // 使用文件安全验证器
      ComprehensiveFileValidator.UploadValidationResult result = fileValidator.validateFile(file);
      if (!result.isValid()) {
         return R.fail(result.getMessage());
      }
      boolean temp = Objects.requireNonNull(file.getOriginalFilename()).endsWith(FlowEngineConstant.SUFFIX);
      return R.data(Kv.create().set("name", file.getOriginalFilename()).set("success", temp));
   }
@@ -108,12 +120,17 @@
    * @param files    流程文件
    * @param category 类型
    */
   @PostMapping("deploy-upload")
   @PostMapping("/deploy-upload")
   @ApiOperationSupport(order = 5)
   @ApiOperation(value = "上传部署流程文件", notes = "传入文件")
   public R deployUpload(@RequestParam List<MultipartFile> files,
                    @RequestParam String category,
                    @RequestParam(required = false, defaultValue = "") String tenantIds) {
      // 使用文件安全验证器
      ComprehensiveFileValidator.MultiUploadValidationResult result = fileValidator.validateFiles(files,true);
      if (!result.isValid()) {
         return R.fail(result.getMessage());
      }
      return R.status(flowEngineService.deployUpload(files, category, Func.toStrList(tenantIds)));
   }