refactor(flowable): 移除自定义流程图配置和相关工具类
- 删除 application.yml 中的 Flowable 配置项 - 移除 CustomProcessDiagramCanvas 自定义流程图绘制类 - 移除 CustomProcessDiagramGenerator 自定义流程图生成器 - 移除 FindNextNodeUtil 流程节点查找工具类 - 移除 FlowableConfig 配置类
This commit is contained in:
@@ -1,117 +0,0 @@
|
||||
package com.klp.web.controller.workflow;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckLogin;
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import com.klp.common.annotation.Log;
|
||||
import com.klp.common.annotation.RepeatSubmit;
|
||||
import com.klp.common.core.controller.BaseController;
|
||||
import com.klp.common.core.domain.PageQuery;
|
||||
import com.klp.common.core.domain.R;
|
||||
import com.klp.common.core.page.TableDataInfo;
|
||||
import com.klp.common.enums.BusinessType;
|
||||
import com.klp.common.utils.poi.ExcelUtil;
|
||||
import com.klp.workflow.domain.WfCategory;
|
||||
import com.klp.workflow.domain.vo.WfCategoryVo;
|
||||
import com.klp.workflow.service.IWfCategoryService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 流程分类Controller
|
||||
*
|
||||
* @author KonBAI
|
||||
* @createTime 2022/3/10 00:12
|
||||
*/
|
||||
@Validated
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/workflow/category")
|
||||
public class WfCategoryController extends BaseController {
|
||||
|
||||
private final IWfCategoryService categoryService;
|
||||
|
||||
/**
|
||||
* 查询流程分类列表
|
||||
*/
|
||||
@SaCheckPermission("workflow:category:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<WfCategoryVo> list(WfCategory category, PageQuery pageQuery) {
|
||||
return categoryService.queryPageList(category, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询全部的流程分类列表
|
||||
*/
|
||||
@SaCheckLogin
|
||||
@GetMapping("/listAll")
|
||||
public R<List<WfCategoryVo>> listAll(WfCategory category) {
|
||||
return R.ok(categoryService.queryList(category));
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出流程分类列表
|
||||
*/
|
||||
@SaCheckPermission("workflow:category:export")
|
||||
@Log(title = "流程分类", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(@Validated WfCategory category, HttpServletResponse response) {
|
||||
List<WfCategoryVo> list = categoryService.queryList(category);
|
||||
ExcelUtil.exportExcel(list, "流程分类", WfCategoryVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取流程分类详细信息
|
||||
* @param categoryId 分类主键
|
||||
*/
|
||||
@SaCheckPermission("workflow:category:query")
|
||||
@GetMapping("/{categoryId}")
|
||||
public R<WfCategoryVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable("categoryId") Long categoryId) {
|
||||
return R.ok(categoryService.queryById(categoryId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增流程分类
|
||||
*/
|
||||
@SaCheckPermission("workflow:category:add")
|
||||
@Log(title = "流程分类", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping()
|
||||
public R<Void> add(@Validated @RequestBody WfCategory category) {
|
||||
if (!categoryService.checkCategoryCodeUnique(category)) {
|
||||
return R.fail("新增流程分类'" + category.getCategoryName() + "'失败,流程编码已存在");
|
||||
}
|
||||
return toAjax(categoryService.insertCategory(category));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改流程分类
|
||||
*/
|
||||
@SaCheckPermission("workflow:category:edit")
|
||||
@Log(title = "流程分类", businessType = BusinessType.UPDATE)
|
||||
@RepeatSubmit()
|
||||
@PutMapping()
|
||||
public R<Void> edit(@Validated @RequestBody WfCategory category) {
|
||||
if (!categoryService.checkCategoryCodeUnique(category)) {
|
||||
return R.fail("修改流程分类'" + category.getCategoryName() + "'失败,流程编码已存在");
|
||||
}
|
||||
return toAjax(categoryService.updateCategory(category));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除流程分类
|
||||
* @param categoryIds 分类主键串
|
||||
*/
|
||||
@SaCheckPermission("workflow:category:remove")
|
||||
@Log(title = "流程分类" , businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{categoryIds}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] categoryIds) {
|
||||
return toAjax(categoryService.deleteWithValidByIds(Arrays.asList(categoryIds), true));
|
||||
}
|
||||
}
|
||||
@@ -1,107 +0,0 @@
|
||||
package com.klp.web.controller.workflow;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import com.klp.common.annotation.Log;
|
||||
import com.klp.common.core.controller.BaseController;
|
||||
import com.klp.common.core.domain.PageQuery;
|
||||
import com.klp.common.core.domain.R;
|
||||
import com.klp.common.core.page.TableDataInfo;
|
||||
import com.klp.common.enums.BusinessType;
|
||||
import com.klp.common.utils.JsonUtils;
|
||||
import com.klp.flowable.core.domain.ProcessQuery;
|
||||
import com.klp.workflow.domain.vo.WfDeployVo;
|
||||
import com.klp.workflow.domain.vo.WfFormVo;
|
||||
import com.klp.workflow.service.IWfDeployFormService;
|
||||
import com.klp.workflow.service.IWfDeployService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import java.util.Arrays;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 流程部署
|
||||
*
|
||||
* @author KonBAI
|
||||
* @createTime 2022/3/24 20:57
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/workflow/deploy")
|
||||
public class WfDeployController extends BaseController {
|
||||
|
||||
private final IWfDeployService deployService;
|
||||
private final IWfDeployFormService deployFormService;
|
||||
|
||||
/**
|
||||
* 查询流程部署列表
|
||||
*/
|
||||
@SaCheckPermission("workflow:deploy:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<WfDeployVo> list(ProcessQuery processQuery, PageQuery pageQuery) {
|
||||
return deployService.queryPageList(processQuery, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询流程部署版本列表
|
||||
*/
|
||||
@SaCheckPermission("workflow:deploy:list")
|
||||
@GetMapping("/publishList")
|
||||
public TableDataInfo<WfDeployVo> publishList(@RequestParam String processKey, PageQuery pageQuery) {
|
||||
return deployService.queryPublishList(processKey, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 激活或挂起流程
|
||||
*
|
||||
* @param state 状态(active:激活 suspended:挂起)
|
||||
* @param definitionId 流程定义ID
|
||||
*/
|
||||
@SaCheckPermission("workflow:deploy:state")
|
||||
@PutMapping(value = "/changeState")
|
||||
public R<Void> changeState(@RequestParam String state, @RequestParam String definitionId) {
|
||||
deployService.updateState(definitionId, state);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 读取xml文件
|
||||
* @param definitionId 流程定义ID
|
||||
* @return
|
||||
*/
|
||||
@SaCheckPermission("workflow:deploy:query")
|
||||
@GetMapping("/bpmnXml/{definitionId}")
|
||||
public R<String> getBpmnXml(@PathVariable(value = "definitionId") String definitionId) {
|
||||
return R.ok(null, deployService.queryBpmnXmlById(definitionId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除流程模型
|
||||
* @param deployIds 流程部署ids
|
||||
*/
|
||||
@SaCheckPermission("workflow:deploy:remove")
|
||||
@Log(title = "删除流程部署", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{deployIds}")
|
||||
public R<String> remove(@NotEmpty(message = "主键不能为空") @PathVariable String[] deployIds) {
|
||||
deployService.deleteByIds(Arrays.asList(deployIds));
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询流程部署关联表单信息
|
||||
*
|
||||
* @param deployId 流程部署id
|
||||
*/
|
||||
@GetMapping("/form/{deployId}")
|
||||
public R<?> start(@PathVariable(value = "deployId") String deployId) {
|
||||
WfFormVo formVo = deployFormService.selectDeployFormByDeployId(deployId);
|
||||
if (Objects.isNull(formVo)) {
|
||||
return R.fail("请先配置流程表单");
|
||||
}
|
||||
return R.ok(JsonUtils.parseObject(formVo.getContent(), Map.class));
|
||||
}
|
||||
}
|
||||
@@ -1,112 +0,0 @@
|
||||
package com.klp.web.controller.workflow;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import com.klp.common.annotation.Log;
|
||||
import com.klp.common.core.controller.BaseController;
|
||||
import com.klp.common.core.domain.PageQuery;
|
||||
import com.klp.common.core.domain.R;
|
||||
import com.klp.common.core.page.TableDataInfo;
|
||||
import com.klp.common.core.validate.QueryGroup;
|
||||
import com.klp.common.enums.BusinessType;
|
||||
import com.klp.common.utils.poi.ExcelUtil;
|
||||
import com.klp.workflow.domain.WfDeployForm;
|
||||
import com.klp.workflow.domain.bo.WfFormBo;
|
||||
import com.klp.workflow.domain.vo.WfFormVo;
|
||||
import com.klp.workflow.service.IWfDeployFormService;
|
||||
import com.klp.workflow.service.IWfFormService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* 流程表单Controller
|
||||
*
|
||||
* @author KonBAI
|
||||
* @createTime 2022/3/7 22:07
|
||||
*/
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/workflow/form")
|
||||
public class WfFormController extends BaseController {
|
||||
|
||||
private final IWfFormService formService;
|
||||
|
||||
private final IWfDeployFormService deployFormService;
|
||||
|
||||
/**
|
||||
* 查询流程表单列表
|
||||
*/
|
||||
@SaCheckPermission("workflow:form:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<WfFormVo> list(@Validated(QueryGroup.class) WfFormBo bo, PageQuery pageQuery) {
|
||||
return formService.queryPageList(bo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出流程表单列表
|
||||
*/
|
||||
@SaCheckPermission("workflow:form:export")
|
||||
@Log(title = "流程表单", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/export")
|
||||
public void export(@Validated WfFormBo bo, HttpServletResponse response) {
|
||||
List<WfFormVo> list = formService.queryList(bo);
|
||||
ExcelUtil.exportExcel(list, "流程表单", WfFormVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取流程表单详细信息
|
||||
* @param formId 主键
|
||||
*/
|
||||
@SaCheckPermission("workflow:form:query")
|
||||
@GetMapping(value = "/{formId}")
|
||||
public R<WfFormVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable("formId") Long formId) {
|
||||
return R.ok(formService.queryById(formId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增流程表单
|
||||
*/
|
||||
@SaCheckPermission("workflow:form:add")
|
||||
@Log(title = "流程表单", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public R<Void> add(@RequestBody WfFormBo bo) {
|
||||
return toAjax(formService.insertForm(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改流程表单
|
||||
*/
|
||||
@SaCheckPermission("workflow:form:edit")
|
||||
@Log(title = "流程表单", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public R<Void> edit(@RequestBody WfFormBo bo) {
|
||||
return toAjax(formService.updateForm(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除流程表单
|
||||
* @param formIds 主键串
|
||||
*/
|
||||
@SaCheckPermission("workflow:form:remove")
|
||||
@Log(title = "流程表单", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{formIds}")
|
||||
public R<Void> remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] formIds) {
|
||||
return toAjax(formService.deleteWithValidByIds(Arrays.asList(formIds)) ? 1 : 0);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 挂载流程表单
|
||||
*/
|
||||
@Log(title = "流程表单", businessType = BusinessType.INSERT)
|
||||
@PostMapping("/addDeployForm")
|
||||
public R<Void> addDeployForm(@RequestBody WfDeployForm deployForm) {
|
||||
return toAjax(deployFormService.insertWfDeployForm(deployForm));
|
||||
}
|
||||
}
|
||||
@@ -1,71 +0,0 @@
|
||||
package com.klp.web.controller.workflow;
|
||||
|
||||
|
||||
import com.klp.common.core.domain.R;
|
||||
import com.klp.workflow.domain.bo.WfTaskBo;
|
||||
import com.klp.workflow.service.IWfInstanceService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
/**
|
||||
* 工作流流程实例管理
|
||||
*
|
||||
* @author KonBAI
|
||||
* @createTime 2022/3/10 00:12
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/workflow/instance")
|
||||
public class WfInstanceController {
|
||||
|
||||
private final IWfInstanceService instanceService;
|
||||
|
||||
/**
|
||||
* 激活或挂起流程实例
|
||||
*
|
||||
* @param state 1:激活,2:挂起
|
||||
* @param instanceId 流程实例ID
|
||||
*/
|
||||
@PostMapping(value = "/updateState")
|
||||
public R updateState(@RequestParam Integer state, @RequestParam String instanceId) {
|
||||
instanceService.updateState(state, instanceId);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 结束流程实例
|
||||
*
|
||||
* @param bo 流程任务业务对象
|
||||
*/
|
||||
@PostMapping(value = "/stopProcessInstance")
|
||||
public R stopProcessInstance(@RequestBody WfTaskBo bo) {
|
||||
instanceService.stopProcessInstance(bo);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除流程实例
|
||||
*
|
||||
* @param instanceId 流程实例ID
|
||||
* @param deleteReason 删除原因
|
||||
*/
|
||||
@Deprecated
|
||||
@DeleteMapping(value = "/delete")
|
||||
public R delete(@RequestParam String instanceId, String deleteReason) {
|
||||
instanceService.delete(instanceId, deleteReason);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询流程实例详情信息
|
||||
*
|
||||
* @param procInsId 流程实例ID
|
||||
* @param deployId 流程部署ID
|
||||
*/
|
||||
@GetMapping("/detail")
|
||||
public R detail(String procInsId, String deployId) {
|
||||
return R.ok(instanceService.queryDetailProcess(procInsId, deployId));
|
||||
}
|
||||
}
|
||||
@@ -1,187 +0,0 @@
|
||||
package com.klp.web.controller.workflow;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import com.klp.common.annotation.Log;
|
||||
import com.klp.common.annotation.RepeatSubmit;
|
||||
import com.klp.common.core.controller.BaseController;
|
||||
import com.klp.common.core.domain.PageQuery;
|
||||
import com.klp.common.core.domain.R;
|
||||
import com.klp.common.core.page.TableDataInfo;
|
||||
import com.klp.common.core.validate.AddGroup;
|
||||
import com.klp.common.core.validate.EditGroup;
|
||||
import com.klp.common.enums.BusinessType;
|
||||
import com.klp.common.utils.poi.ExcelUtil;
|
||||
import com.klp.workflow.domain.WfCategory;
|
||||
import com.klp.workflow.domain.bo.WfModelBo;
|
||||
import com.klp.workflow.domain.vo.WfCategoryVo;
|
||||
import com.klp.workflow.domain.vo.WfModelExportVo;
|
||||
import com.klp.workflow.domain.vo.WfModelVo;
|
||||
import com.klp.workflow.service.IWfCategoryService;
|
||||
import com.klp.workflow.service.IWfModelService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.validation.constraints.NotEmpty;
|
||||
import javax.validation.constraints.NotNull;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
/**
|
||||
* 工作流流程模型管理
|
||||
*
|
||||
* @author KonBAI
|
||||
* @createTime 2022/6/21 9:09
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/workflow/model")
|
||||
public class WfModelController extends BaseController {
|
||||
|
||||
private final IWfModelService modelService;
|
||||
private final IWfCategoryService categoryService;
|
||||
|
||||
/**
|
||||
* 查询流程模型列表
|
||||
*
|
||||
* @param modelBo 流程模型对象
|
||||
* @param pageQuery 分页参数
|
||||
*/
|
||||
@SaCheckPermission("workflow:model:list")
|
||||
@GetMapping("/list")
|
||||
public TableDataInfo<WfModelVo> list(WfModelBo modelBo, PageQuery pageQuery) {
|
||||
return modelService.list(modelBo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询流程模型列表
|
||||
*
|
||||
* @param modelBo 流程模型对象
|
||||
* @param pageQuery 分页参数
|
||||
*/
|
||||
@SaCheckPermission("workflow:model:list")
|
||||
@GetMapping("/historyList")
|
||||
public TableDataInfo<WfModelVo> historyList(WfModelBo modelBo, PageQuery pageQuery) {
|
||||
return modelService.historyList(modelBo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取流程模型详细信息
|
||||
*
|
||||
* @param modelId 模型主键
|
||||
*/
|
||||
@SaCheckPermission("workflow:model:query")
|
||||
@GetMapping(value = "/{modelId}")
|
||||
public R<WfModelVo> getInfo(@NotNull(message = "主键不能为空") @PathVariable("modelId") String modelId) {
|
||||
return R.ok(modelService.getModel(modelId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取流程表单详细信息
|
||||
*
|
||||
* @param modelId 模型主键
|
||||
*/
|
||||
@SaCheckPermission("workflow:model:query")
|
||||
@GetMapping(value = "/bpmnXml/{modelId}")
|
||||
public R<String> getBpmnXml(@NotNull(message = "主键不能为空") @PathVariable("modelId") String modelId) {
|
||||
return R.ok("操作成功", modelService.queryBpmnXmlById(modelId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 新增流程模型
|
||||
*/
|
||||
@SaCheckPermission("workflow:model:add")
|
||||
@Log(title = "流程模型", businessType = BusinessType.INSERT)
|
||||
@PostMapping
|
||||
public R<Void> add(@Validated(AddGroup.class) @RequestBody WfModelBo modelBo) {
|
||||
modelService.insertModel(modelBo);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改流程模型
|
||||
*/
|
||||
@SaCheckPermission("workflow:model:edit")
|
||||
@Log(title = "流程模型", businessType = BusinessType.UPDATE)
|
||||
@PutMapping
|
||||
public R<Void> edit(@Validated(EditGroup.class) @RequestBody WfModelBo modelBo) {
|
||||
modelService.updateModel(modelBo);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 保存流程模型
|
||||
*/
|
||||
@SaCheckPermission("workflow:model:save")
|
||||
@Log(title = "保存流程模型", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping("/save")
|
||||
public R<String> save(@RequestBody WfModelBo modelBo) {
|
||||
modelService.saveModel(modelBo);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 设为最新流程模型
|
||||
* @param modelId
|
||||
* @return
|
||||
*/
|
||||
@SaCheckPermission("workflow:model:save")
|
||||
@Log(title = "设为最新流程模型", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping("/latest")
|
||||
public R<?> latest(@RequestParam String modelId) {
|
||||
modelService.latestModel(modelId);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除流程模型
|
||||
*
|
||||
* @param modelIds 流程模型主键串
|
||||
*/
|
||||
@SaCheckPermission("workflow:model:remove")
|
||||
@Log(title = "删除流程模型", businessType = BusinessType.DELETE)
|
||||
@DeleteMapping("/{modelIds}")
|
||||
public R<String> remove(@NotEmpty(message = "主键不能为空") @PathVariable String[] modelIds) {
|
||||
modelService.deleteByIds(Arrays.asList(modelIds));
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 部署流程模型
|
||||
*
|
||||
* @param modelId 流程模型主键
|
||||
*/
|
||||
@SaCheckPermission("workflow:model:deploy")
|
||||
@Log(title = "部署流程模型", businessType = BusinessType.INSERT)
|
||||
@RepeatSubmit()
|
||||
@PostMapping("/deploy")
|
||||
public R<Void> deployModel(@RequestParam String modelId) {
|
||||
return toAjax(modelService.deployModel(modelId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出流程模型数据
|
||||
*/
|
||||
@Log(title = "导出流程模型数据", businessType = BusinessType.EXPORT)
|
||||
@SaCheckPermission("workflow:model:export")
|
||||
@PostMapping("/export")
|
||||
public void export(WfModelBo modelBo, HttpServletResponse response) {
|
||||
List<WfModelVo> list = modelService.list(modelBo);
|
||||
List<WfModelExportVo> listVo = BeanUtil.copyToList(list, WfModelExportVo.class);
|
||||
List<WfCategoryVo> categoryVos = categoryService.queryList(new WfCategory());
|
||||
Map<String, String> categoryMap = categoryVos.stream()
|
||||
.collect(Collectors.toMap(WfCategoryVo::getCode, WfCategoryVo::getCategoryName));
|
||||
for (WfModelExportVo exportVo : listVo) {
|
||||
exportVo.setCategoryName(categoryMap.get(exportVo.getCategory()));
|
||||
}
|
||||
ExcelUtil.exportExcel(listVo, "流程模型数据", WfModelExportVo.class, response);
|
||||
}
|
||||
}
|
||||
@@ -1,239 +0,0 @@
|
||||
package com.klp.web.controller.workflow;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.bean.BeanUtil;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.klp.common.annotation.Log;
|
||||
import com.klp.common.core.controller.BaseController;
|
||||
import com.klp.common.core.domain.PageQuery;
|
||||
import com.klp.common.core.domain.R;
|
||||
import com.klp.common.core.page.TableDataInfo;
|
||||
import com.klp.common.enums.BusinessType;
|
||||
import com.klp.common.utils.poi.ExcelUtil;
|
||||
import com.klp.flowable.core.domain.ProcessQuery;
|
||||
import com.klp.workflow.domain.bo.WfCopyBo;
|
||||
import com.klp.workflow.domain.vo.*;
|
||||
import com.klp.workflow.service.IWfCopyService;
|
||||
import com.klp.workflow.service.IWfProcessService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
* 工作流流程管理
|
||||
*
|
||||
* @author KonBAI
|
||||
* @createTime 2022/3/24 18:54
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/workflow/process")
|
||||
public class WfProcessController extends BaseController {
|
||||
|
||||
private final IWfProcessService processService;
|
||||
private final IWfCopyService copyService;
|
||||
|
||||
/**
|
||||
* 查询可发起流程列表
|
||||
*
|
||||
* @param pageQuery 分页参数
|
||||
*/
|
||||
@GetMapping(value = "/list")
|
||||
@SaCheckPermission("workflow:process:startList")
|
||||
public TableDataInfo<WfDefinitionVo> startProcessList(ProcessQuery processQuery, PageQuery pageQuery) {
|
||||
return processService.selectPageStartProcessList(processQuery, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 我拥有的流程
|
||||
*/
|
||||
@SaCheckPermission("workflow:process:ownList")
|
||||
@GetMapping(value = "/ownList")
|
||||
public TableDataInfo<WfTaskVo> ownProcessList(ProcessQuery processQuery, PageQuery pageQuery) {
|
||||
return processService.selectPageOwnProcessList(processQuery, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取待办列表
|
||||
*/
|
||||
@SaCheckPermission("workflow:process:todoList")
|
||||
@GetMapping(value = "/todoList")
|
||||
public TableDataInfo<WfTaskVo> todoProcessList(ProcessQuery processQuery, PageQuery pageQuery) {
|
||||
return processService.selectPageTodoProcessList(processQuery, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取待签列表
|
||||
*
|
||||
* @param processQuery 流程业务对象
|
||||
* @param pageQuery 分页参数
|
||||
*/
|
||||
@SaCheckPermission("workflow:process:claimList")
|
||||
@GetMapping(value = "/claimList")
|
||||
public TableDataInfo<WfTaskVo> claimProcessList(ProcessQuery processQuery, PageQuery pageQuery) {
|
||||
return processService.selectPageClaimProcessList(processQuery, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取已办列表
|
||||
*
|
||||
* @param pageQuery 分页参数
|
||||
*/
|
||||
@SaCheckPermission("workflow:process:finishedList")
|
||||
@GetMapping(value = "/finishedList")
|
||||
public TableDataInfo<WfTaskVo> finishedProcessList(ProcessQuery processQuery, PageQuery pageQuery) {
|
||||
return processService.selectPageFinishedProcessList(processQuery, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取抄送列表
|
||||
*
|
||||
* @param copyBo 流程抄送对象
|
||||
* @param pageQuery 分页参数
|
||||
*/
|
||||
@SaCheckPermission("workflow:process:copyList")
|
||||
@GetMapping(value = "/copyList")
|
||||
public TableDataInfo<WfCopyVo> copyProcessList(WfCopyBo copyBo, PageQuery pageQuery) {
|
||||
copyBo.setUserId(getUserId());
|
||||
return copyService.selectPageList(copyBo, pageQuery);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出可发起流程列表
|
||||
*/
|
||||
@SaCheckPermission("workflow:process:startExport")
|
||||
@Log(title = "可发起流程", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/startExport")
|
||||
public void startExport(@Validated ProcessQuery processQuery, HttpServletResponse response) {
|
||||
List<WfDefinitionVo> list = processService.selectStartProcessList(processQuery);
|
||||
ExcelUtil.exportExcel(list, "可发起流程", WfDefinitionVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出我拥有流程列表
|
||||
*/
|
||||
@SaCheckPermission("workflow:process:ownExport")
|
||||
@Log(title = "我拥有流程", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/ownExport")
|
||||
public void ownExport(@Validated ProcessQuery processQuery, HttpServletResponse response) {
|
||||
List<WfTaskVo> list = processService.selectOwnProcessList(processQuery);
|
||||
List<WfOwnTaskExportVo> listVo = BeanUtil.copyToList(list, WfOwnTaskExportVo.class);
|
||||
for (WfOwnTaskExportVo exportVo : listVo) {
|
||||
exportVo.setStatus(ObjectUtil.isNull(exportVo.getFinishTime()) ? "进行中" : "已完成");
|
||||
}
|
||||
ExcelUtil.exportExcel(listVo, "我拥有流程", WfOwnTaskExportVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出待办流程列表
|
||||
*/
|
||||
@SaCheckPermission("workflow:process:todoExport")
|
||||
@Log(title = "待办流程", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/todoExport")
|
||||
public void todoExport(@Validated ProcessQuery processQuery, HttpServletResponse response) {
|
||||
List<WfTaskVo> list = processService.selectTodoProcessList(processQuery);
|
||||
List<WfTodoTaskExportVo> listVo = BeanUtil.copyToList(list, WfTodoTaskExportVo.class);
|
||||
ExcelUtil.exportExcel(listVo, "待办流程", WfTodoTaskExportVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出待签流程列表
|
||||
*/
|
||||
@SaCheckPermission("workflow:process:claimExport")
|
||||
@Log(title = "待签流程", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/claimExport")
|
||||
public void claimExport(@Validated ProcessQuery processQuery, HttpServletResponse response) {
|
||||
List<WfTaskVo> list = processService.selectClaimProcessList(processQuery);
|
||||
List<WfClaimTaskExportVo> listVo = BeanUtil.copyToList(list, WfClaimTaskExportVo.class);
|
||||
ExcelUtil.exportExcel(listVo, "待签流程", WfClaimTaskExportVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出已办流程列表
|
||||
*/
|
||||
@SaCheckPermission("workflow:process:finishedExport")
|
||||
@Log(title = "已办流程", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/finishedExport")
|
||||
public void finishedExport(@Validated ProcessQuery processQuery, HttpServletResponse response) {
|
||||
List<WfTaskVo> list = processService.selectFinishedProcessList(processQuery);
|
||||
List<WfFinishedTaskExportVo> listVo = BeanUtil.copyToList(list, WfFinishedTaskExportVo.class);
|
||||
ExcelUtil.exportExcel(listVo, "已办流程", WfFinishedTaskExportVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出抄送流程列表
|
||||
*/
|
||||
@SaCheckPermission("workflow:process:copyExport")
|
||||
@Log(title = "抄送流程", businessType = BusinessType.EXPORT)
|
||||
@PostMapping("/copyExport")
|
||||
public void copyExport(WfCopyBo copyBo, HttpServletResponse response) {
|
||||
copyBo.setUserId(getUserId());
|
||||
List<WfCopyVo> list = copyService.selectList(copyBo);
|
||||
ExcelUtil.exportExcel(list, "抄送流程", WfCopyVo.class, response);
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询流程部署关联表单信息
|
||||
*
|
||||
* @param definitionId 流程定义id
|
||||
* @param deployId 流程部署id
|
||||
*/
|
||||
@GetMapping("/getProcessForm")
|
||||
@SaCheckPermission("workflow:process:start")
|
||||
public R<?> getForm(@RequestParam(value = "definitionId") String definitionId,
|
||||
@RequestParam(value = "deployId") String deployId,
|
||||
@RequestParam(value = "procInsId", required = false) String procInsId) {
|
||||
return R.ok(processService.selectFormContent(definitionId, deployId, procInsId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据流程定义id启动流程实例
|
||||
*
|
||||
* @param processDefId 流程定义id
|
||||
* @param variables 变量集合,json对象
|
||||
*/
|
||||
@SaCheckPermission("workflow:process:start")
|
||||
@PostMapping("/start/{processDefId}")
|
||||
public R<Void> start(@PathVariable(value = "processDefId") String processDefId, @RequestBody Map<String, Object> variables) {
|
||||
// 如果包含审批人信息,则处理审批人信息
|
||||
processService.startProcessByDefId(processDefId, variables);
|
||||
return R.ok("流程启动成功");
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除流程实例
|
||||
*
|
||||
* @param instanceIds 流程实例ID串
|
||||
*/
|
||||
@DeleteMapping("/instance/{instanceIds}")
|
||||
public R<Void> delete(@PathVariable String[] instanceIds) {
|
||||
processService.deleteProcessByIds(instanceIds);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 读取xml文件
|
||||
* @param processDefId 流程定义ID
|
||||
*/
|
||||
@GetMapping("/bpmnXml/{processDefId}")
|
||||
public R<String> getBpmnXml(@PathVariable(value = "processDefId") String processDefId) {
|
||||
return R.ok(null, processService.queryBpmnXmlById(processDefId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询流程详情信息
|
||||
*
|
||||
* @param procInsId 流程实例ID
|
||||
* @param taskId 任务ID
|
||||
*/
|
||||
@GetMapping("/detail")
|
||||
public R detail(String procInsId, String taskId) {
|
||||
return R.ok(processService.queryProcessDetail(procInsId, taskId));
|
||||
}
|
||||
}
|
||||
@@ -1,189 +0,0 @@
|
||||
package com.klp.web.controller.workflow;
|
||||
|
||||
import cn.dev33.satoken.annotation.SaCheckPermission;
|
||||
import cn.hutool.core.util.ObjectUtil;
|
||||
import com.klp.common.core.domain.R;
|
||||
import com.klp.workflow.domain.bo.WfTaskBo;
|
||||
import com.klp.workflow.service.IWfTaskService;
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.imageio.ImageIO;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.awt.image.BufferedImage;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
|
||||
/**
|
||||
* 工作流任务管理
|
||||
*
|
||||
* @author KonBAI
|
||||
* @createTime 2022/3/10 00:12
|
||||
*/
|
||||
@Slf4j
|
||||
@RequiredArgsConstructor
|
||||
@RestController
|
||||
@RequestMapping("/workflow/task")
|
||||
public class WfTaskController {
|
||||
|
||||
private final IWfTaskService flowTaskService;
|
||||
|
||||
/**
|
||||
* 取消流程
|
||||
*/
|
||||
@PostMapping(value = "/stopProcess")
|
||||
@SaCheckPermission("workflow:process:cancel")
|
||||
public R stopProcess(@RequestBody WfTaskBo bo) {
|
||||
flowTaskService.stopProcess(bo);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 撤回流程
|
||||
*/
|
||||
@PostMapping(value = "/revokeProcess")
|
||||
@SaCheckPermission("workflow:process:revoke")
|
||||
public R revokeProcess(@RequestBody WfTaskBo bo) {
|
||||
flowTaskService.revokeProcess(bo);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取流程变量
|
||||
* @param taskId 流程任务Id
|
||||
*/
|
||||
@GetMapping(value = "/processVariables/{taskId}")
|
||||
@SaCheckPermission("workflow:process:query")
|
||||
public R processVariables(@PathVariable(value = "taskId") String taskId) {
|
||||
return R.ok(flowTaskService.getProcessVariables(taskId));
|
||||
}
|
||||
|
||||
/**
|
||||
* 审批任务
|
||||
*/
|
||||
@PostMapping(value = "/complete")
|
||||
@SaCheckPermission("workflow:process:approval")
|
||||
public R complete(@RequestBody WfTaskBo bo) {
|
||||
flowTaskService.complete(bo);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 拒绝任务
|
||||
*/
|
||||
@PostMapping(value = "/reject")
|
||||
@SaCheckPermission("workflow:process:approval")
|
||||
public R taskReject(@RequestBody WfTaskBo taskBo) {
|
||||
flowTaskService.taskReject(taskBo);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 退回任务
|
||||
*/
|
||||
@PostMapping(value = "/return")
|
||||
@SaCheckPermission("workflow:process:approval")
|
||||
public R taskReturn(@RequestBody WfTaskBo bo) {
|
||||
flowTaskService.taskReturn(bo);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取所有可回退的节点
|
||||
*/
|
||||
@PostMapping(value = "/returnList")
|
||||
@SaCheckPermission("workflow:process:query")
|
||||
public R findReturnTaskList(@RequestBody WfTaskBo bo) {
|
||||
return R.ok(flowTaskService.findReturnTaskList(bo));
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除任务
|
||||
*/
|
||||
@DeleteMapping(value = "/delete")
|
||||
@SaCheckPermission("workflow:process:approval")
|
||||
public R delete(@RequestBody WfTaskBo bo) {
|
||||
flowTaskService.deleteTask(bo);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 认领/签收任务
|
||||
*/
|
||||
@PostMapping(value = "/claim")
|
||||
@SaCheckPermission("workflow:process:claim")
|
||||
public R claim(@RequestBody WfTaskBo bo) {
|
||||
flowTaskService.claim(bo);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 取消认领/签收任务
|
||||
*/
|
||||
@PostMapping(value = "/unClaim")
|
||||
@SaCheckPermission("workflow:process:claim")
|
||||
public R unClaim(@RequestBody WfTaskBo bo) {
|
||||
flowTaskService.unClaim(bo);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 委派任务
|
||||
*/
|
||||
@PostMapping(value = "/delegate")
|
||||
@SaCheckPermission("workflow:process:approval")
|
||||
public R delegate(@RequestBody WfTaskBo bo) {
|
||||
if (ObjectUtil.hasNull(bo.getTaskId(), bo.getUserId())) {
|
||||
return R.fail("参数错误!");
|
||||
}
|
||||
flowTaskService.delegateTask(bo);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 转办任务
|
||||
*/
|
||||
@PostMapping(value = "/transfer")
|
||||
@SaCheckPermission("workflow:process:approval")
|
||||
public R transfer(@RequestBody WfTaskBo bo) {
|
||||
if (ObjectUtil.hasNull(bo.getTaskId(), bo.getUserId())) {
|
||||
return R.fail("参数错误!");
|
||||
}
|
||||
flowTaskService.transferTask(bo);
|
||||
return R.ok();
|
||||
}
|
||||
|
||||
/**
|
||||
* 生成流程图
|
||||
*
|
||||
* @param processId 任务ID
|
||||
*/
|
||||
@RequestMapping("/diagram/{processId}")
|
||||
public void genProcessDiagram(HttpServletResponse response,
|
||||
@PathVariable("processId") String processId) {
|
||||
InputStream inputStream = flowTaskService.diagram(processId);
|
||||
OutputStream os = null;
|
||||
BufferedImage image = null;
|
||||
try {
|
||||
image = ImageIO.read(inputStream);
|
||||
response.setContentType("image/png");
|
||||
os = response.getOutputStream();
|
||||
if (image != null) {
|
||||
ImageIO.write(image, "png", os);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
} finally {
|
||||
try {
|
||||
if (os != null) {
|
||||
os.flush();
|
||||
os.close();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -298,19 +298,6 @@ management:
|
||||
logfile:
|
||||
external-file: ./logs/sys-console.log
|
||||
|
||||
--- # Flowable 配置
|
||||
flowable:
|
||||
# 关闭定时任务 job
|
||||
async-executor-activate: false
|
||||
# 库与数据库表结构不一致时,会自动将数据库表结构升级至新版本。
|
||||
database-schema-update: true
|
||||
idm:
|
||||
# 关闭idm引擎 数据库不会创建act_id_*表,流程流转不会使用act_id_*相关的表
|
||||
enabled: false
|
||||
# 关闭流程定义文件自动检查
|
||||
check-process-definitions: false
|
||||
# 关闭历史任务定时任务job
|
||||
async-history-executor-activate: false
|
||||
|
||||
# 图像识别 OCR 配置(语言包绝对路径)
|
||||
tesseract:
|
||||
|
||||
Reference in New Issue
Block a user