package org.dromara.workflow.controller; import jakarta.servlet.http.HttpServletResponse; import jakarta.validation.constraints.NotBlank; import jakarta.validation.constraints.NotEmpty; import lombok.RequiredArgsConstructor; import org.dromara.common.core.domain.R; import org.dromara.common.core.validate.AddGroup; import org.dromara.common.core.validate.EditGroup; import org.dromara.common.idempotent.annotation.RepeatSubmit; import org.dromara.common.log.annotation.Log; import org.dromara.common.log.enums.BusinessType; import org.dromara.common.mybatis.core.page.PageQuery; import org.dromara.common.mybatis.core.page.TableDataInfo; import org.dromara.common.web.core.BaseController; import org.dromara.workflow.domain.bo.ModelBo; import org.dromara.workflow.domain.vo.ModelVo; import org.dromara.workflow.service.IActModelService; import org.flowable.engine.RepositoryService; import org.flowable.engine.repository.Model; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import java.util.Arrays; import java.util.List; /** * 模型管理 控制层 * * @author may */ @Validated @RequiredArgsConstructor @RestController @RequestMapping("/workflow/model") public class ActModelController extends BaseController { @Autowired(required = false) private RepositoryService repositoryService; private final IActModelService actModelService; /** * 分页查询模型 * * @param modelBo 模型参数 */ @GetMapping("/list") public TableDataInfo page(ModelBo modelBo, PageQuery pageQuery) { return actModelService.page(modelBo, pageQuery); } /** * 新增模型 * * @param modelBo 模型请求对象 */ @Log(title = "模型管理", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping("/save") public R saveNewModel(@Validated(AddGroup.class) @RequestBody ModelBo modelBo) { return toAjax(actModelService.saveNewModel(modelBo)); } /** * 查询模型 * * @param id 模型id */ @GetMapping("/getInfo/{id}") public R getInfo(@NotBlank(message = "模型id不能为空") @PathVariable String id) { return R.ok(actModelService.getInfo(id)); } /** * 修改模型信息 * * @param modelBo 模型数据 */ @Log(title = "模型管理", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping(value = "/update") public R update(@RequestBody ModelBo modelBo) { return toAjax(actModelService.update(modelBo)); } /** * 编辑XMl模型 * * @param modelBo 模型数据 */ @Log(title = "模型管理", businessType = BusinessType.UPDATE) @RepeatSubmit() @PutMapping(value = "/editModelXml") public R editModel(@Validated(EditGroup.class) @RequestBody ModelBo modelBo) { return toAjax(actModelService.editModelXml(modelBo)); } /** * 删除流程模型 * * @param ids 模型id */ @Log(title = "模型管理", businessType = BusinessType.DELETE) @RepeatSubmit() @DeleteMapping("/{ids}") @Transactional(rollbackFor = Exception.class) public R delete(@NotEmpty(message = "主键不能为空") @PathVariable String[] ids) { Arrays.stream(ids).parallel().forEachOrdered(repositoryService::deleteModel); return R.ok(); } /** * 模型部署 * * @param id 模型id */ @Log(title = "模型管理", businessType = BusinessType.INSERT) @RepeatSubmit() @PostMapping("/modelDeploy/{id}") public R deploy(@NotBlank(message = "模型id不能为空") @PathVariable("id") String id) { return toAjax(actModelService.modelDeploy(id)); } /** * 导出模型zip压缩包 * * @param modelIds 模型id * @param response 相应 */ @GetMapping("/export/zip/{modelIds}") public void exportZip(@NotEmpty(message = "模型id不能为空") @PathVariable List modelIds, HttpServletResponse response) { actModelService.exportZip(modelIds, response); } /** * 复制模型 * * @param modelBo 模型数据 */ @PostMapping("/copyModel") public R copyModel(@RequestBody ModelBo modelBo) { return toAjax(actModelService.copyModel(modelBo)); } }