From ee88de3e993a828f2799faab073cb87b4a53cf6e Mon Sep 17 00:00:00 2001
From: Joshi <3040996759@qq.com>
Date: Mon, 29 Dec 2025 16:21:33 +0800
Subject: [PATCH] =?UTF-8?q?refactor(flowable):=20=E7=A7=BB=E9=99=A4?=
=?UTF-8?q?=E8=87=AA=E5=AE=9A=E4=B9=89=E6=B5=81=E7=A8=8B=E5=9B=BE=E9=85=8D?=
=?UTF-8?q?=E7=BD=AE=E5=92=8C=E7=9B=B8=E5=85=B3=E5=B7=A5=E5=85=B7=E7=B1=BB?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 删除 application.yml 中的 Flowable 配置项
- 移除 CustomProcessDiagramCanvas 自定义流程图绘制类
- 移除 CustomProcessDiagramGenerator 自定义流程图生成器
- 移除 FindNextNodeUtil 流程节点查找工具类
- 移除 FlowableConfig 配置类
---
klp-admin/pom.xml | 6 -
.../workflow/WfCategoryController.java | 117 --
.../workflow/WfDeployController.java | 107 --
.../controller/workflow/WfFormController.java | 112 --
.../workflow/WfInstanceController.java | 71 --
.../workflow/WfModelController.java | 187 ---
.../workflow/WfProcessController.java | 239 ----
.../controller/workflow/WfTaskController.java | 189 ---
klp-admin/src/main/resources/application.yml | 13 -
klp-flowable/pom.xml | 37 -
.../common/constant/ProcessConstants.java | 82 --
.../common/constant/TaskConstants.java | 23 -
.../flowable/common/enums/FlowComment.java | 44 -
.../klp/flowable/common/enums/FormType.java | 33 -
.../flowable/common/enums/ProcessStatus.java | 44 -
.../config/GlobalEventListenerConfig.java | 28 -
.../config/MyDefaultProcessDiagramCanvas.java | 94 --
.../java/com/klp/flowable/core/FormConf.java | 65 -
.../flowable/core/domain/ProcessQuery.java | 41 -
.../flowable/factory/FlowServiceFactory.java | 44 -
.../flow/CustomProcessDiagramCanvas.java | 370 ------
.../flow/CustomProcessDiagramGenerator.java | 404 -------
.../klp/flowable/flow/FindNextNodeUtil.java | 221 ----
.../com/klp/flowable/flow/FlowableConfig.java | 23 -
.../com/klp/flowable/flow/FlowableUtils.java | 704 -----------
.../listener/GlobalEventListener.java | 38 -
.../flowable/listener/UserTaskListener.java | 28 -
.../com/klp/flowable/utils/ModelUtils.java | 373 ------
.../klp/flowable/utils/ProcessFormUtils.java | 50 -
.../com/klp/flowable/utils/ProcessUtils.java | 115 --
.../com/klp/flowable/utils/TaskUtils.java | 41 -
klp-system/pom.xml | 6 -
.../com/klp/workflow/domain/WfCategory.java | 50 -
.../java/com/klp/workflow/domain/WfCopy.java | 74 --
.../com/klp/workflow/domain/WfDeployForm.java | 46 -
.../java/com/klp/workflow/domain/WfForm.java | 41 -
.../com/klp/workflow/domain/bo/WfCopyBo.java | 75 --
.../klp/workflow/domain/bo/WfDesignerBo.java | 36 -
.../com/klp/workflow/domain/bo/WfFormBo.java | 45 -
.../com/klp/workflow/domain/bo/WfModelBo.java | 58 -
.../com/klp/workflow/domain/bo/WfTaskBo.java | 64 -
.../klp/workflow/domain/dto/WfCommentDto.java | 25 -
.../workflow/domain/dto/WfMetaInfoDto.java | 30 -
.../klp/workflow/domain/dto/WfNextDto.java | 25 -
.../klp/workflow/domain/vo/WfCategoryVo.java | 46 -
.../domain/vo/WfClaimTaskExportVo.java | 57 -
.../klp/workflow/domain/vo/WfCommentVo.java | 32 -
.../com/klp/workflow/domain/vo/WfCopyVo.java | 93 --
.../workflow/domain/vo/WfDefinitionVo.java | 85 --
.../workflow/domain/vo/WfDeployFormVo.java | 45 -
.../klp/workflow/domain/vo/WfDeployVo.java | 80 --
.../klp/workflow/domain/vo/WfDetailVo.java | 47 -
.../domain/vo/WfFinishedTaskExportVo.java | 70 --
.../com/klp/workflow/domain/vo/WfFormVo.java | 42 -
.../workflow/domain/vo/WfModelExportVo.java | 59 -
.../com/klp/workflow/domain/vo/WfModelVo.java | 59 -
.../workflow/domain/vo/WfOwnTaskExportVo.java | 75 --
.../klp/workflow/domain/vo/WfProcNodeVo.java | 67 --
.../com/klp/workflow/domain/vo/WfTaskVo.java | 132 ---
.../domain/vo/WfTodoTaskExportVo.java | 57 -
.../klp/workflow/domain/vo/WfViewerVo.java | 41 -
.../handler/MultiInstanceHandler.java | 62 -
.../klp/workflow/mapper/WfCategoryMapper.java | 15 -
.../com/klp/workflow/mapper/WfCopyMapper.java | 15 -
.../workflow/mapper/WfDeployFormMapper.java | 15 -
.../com/klp/workflow/mapper/WfFormMapper.java | 21 -
.../workflow/service/IWfCategoryService.java | 64 -
.../klp/workflow/service/IWfCopyService.java | 49 -
.../service/IWfDeployFormService.java | 39 -
.../workflow/service/IWfDeployService.java | 25 -
.../klp/workflow/service/IWfFormService.java | 65 -
.../workflow/service/IWfInstanceService.java | 52 -
.../klp/workflow/service/IWfModelService.java | 71 --
.../workflow/service/IWfProcessService.java | 116 --
.../klp/workflow/service/IWfTaskService.java | 117 --
.../service/impl/WfCategoryServiceImpl.java | 93 --
.../service/impl/WfCopyServiceImpl.java | 114 --
.../service/impl/WfDeployFormServiceImpl.java | 134 ---
.../service/impl/WfDeployServiceImpl.java | 146 ---
.../service/impl/WfFormServiceImpl.java | 118 --
.../service/impl/WfInstanceServiceImpl.java | 212 ----
.../service/impl/WfModelServiceImpl.java | 359 ------
.../service/impl/WfProcessServiceImpl.java | 1050 -----------------
.../service/impl/WfTaskServiceImpl.java | 625 ----------
.../mapper/workflow/WfCategoryMapper.xml | 19 -
.../mapper/workflow/WfCopyMapper.xml | 23 -
.../mapper/workflow/WfDeployFormMapper.xml | 15 -
.../mapper/workflow/WfFormMapper.xml | 27 -
pom.xml | 8 -
89 files changed, 9274 deletions(-)
delete mode 100644 klp-admin/src/main/java/com/klp/web/controller/workflow/WfCategoryController.java
delete mode 100644 klp-admin/src/main/java/com/klp/web/controller/workflow/WfDeployController.java
delete mode 100644 klp-admin/src/main/java/com/klp/web/controller/workflow/WfFormController.java
delete mode 100644 klp-admin/src/main/java/com/klp/web/controller/workflow/WfInstanceController.java
delete mode 100644 klp-admin/src/main/java/com/klp/web/controller/workflow/WfModelController.java
delete mode 100644 klp-admin/src/main/java/com/klp/web/controller/workflow/WfProcessController.java
delete mode 100644 klp-admin/src/main/java/com/klp/web/controller/workflow/WfTaskController.java
delete mode 100644 klp-flowable/pom.xml
delete mode 100644 klp-flowable/src/main/java/com/klp/flowable/common/constant/ProcessConstants.java
delete mode 100644 klp-flowable/src/main/java/com/klp/flowable/common/constant/TaskConstants.java
delete mode 100644 klp-flowable/src/main/java/com/klp/flowable/common/enums/FlowComment.java
delete mode 100644 klp-flowable/src/main/java/com/klp/flowable/common/enums/FormType.java
delete mode 100644 klp-flowable/src/main/java/com/klp/flowable/common/enums/ProcessStatus.java
delete mode 100644 klp-flowable/src/main/java/com/klp/flowable/config/GlobalEventListenerConfig.java
delete mode 100644 klp-flowable/src/main/java/com/klp/flowable/config/MyDefaultProcessDiagramCanvas.java
delete mode 100644 klp-flowable/src/main/java/com/klp/flowable/core/FormConf.java
delete mode 100644 klp-flowable/src/main/java/com/klp/flowable/core/domain/ProcessQuery.java
delete mode 100644 klp-flowable/src/main/java/com/klp/flowable/factory/FlowServiceFactory.java
delete mode 100644 klp-flowable/src/main/java/com/klp/flowable/flow/CustomProcessDiagramCanvas.java
delete mode 100644 klp-flowable/src/main/java/com/klp/flowable/flow/CustomProcessDiagramGenerator.java
delete mode 100644 klp-flowable/src/main/java/com/klp/flowable/flow/FindNextNodeUtil.java
delete mode 100644 klp-flowable/src/main/java/com/klp/flowable/flow/FlowableConfig.java
delete mode 100644 klp-flowable/src/main/java/com/klp/flowable/flow/FlowableUtils.java
delete mode 100644 klp-flowable/src/main/java/com/klp/flowable/listener/GlobalEventListener.java
delete mode 100644 klp-flowable/src/main/java/com/klp/flowable/listener/UserTaskListener.java
delete mode 100644 klp-flowable/src/main/java/com/klp/flowable/utils/ModelUtils.java
delete mode 100644 klp-flowable/src/main/java/com/klp/flowable/utils/ProcessFormUtils.java
delete mode 100644 klp-flowable/src/main/java/com/klp/flowable/utils/ProcessUtils.java
delete mode 100644 klp-flowable/src/main/java/com/klp/flowable/utils/TaskUtils.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/domain/WfCategory.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/domain/WfCopy.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/domain/WfDeployForm.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/domain/WfForm.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/domain/bo/WfCopyBo.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/domain/bo/WfDesignerBo.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/domain/bo/WfFormBo.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/domain/bo/WfModelBo.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/domain/bo/WfTaskBo.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/domain/dto/WfCommentDto.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/domain/dto/WfMetaInfoDto.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/domain/dto/WfNextDto.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/domain/vo/WfCategoryVo.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/domain/vo/WfClaimTaskExportVo.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/domain/vo/WfCommentVo.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/domain/vo/WfCopyVo.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/domain/vo/WfDefinitionVo.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/domain/vo/WfDeployFormVo.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/domain/vo/WfDeployVo.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/domain/vo/WfDetailVo.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/domain/vo/WfFinishedTaskExportVo.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/domain/vo/WfFormVo.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/domain/vo/WfModelExportVo.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/domain/vo/WfModelVo.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/domain/vo/WfOwnTaskExportVo.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/domain/vo/WfProcNodeVo.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/domain/vo/WfTaskVo.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/domain/vo/WfTodoTaskExportVo.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/domain/vo/WfViewerVo.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/handler/MultiInstanceHandler.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/mapper/WfCategoryMapper.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/mapper/WfCopyMapper.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/mapper/WfDeployFormMapper.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/mapper/WfFormMapper.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/service/IWfCategoryService.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/service/IWfCopyService.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/service/IWfDeployFormService.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/service/IWfDeployService.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/service/IWfFormService.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/service/IWfInstanceService.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/service/IWfModelService.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/service/IWfProcessService.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/service/IWfTaskService.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/service/impl/WfCategoryServiceImpl.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/service/impl/WfCopyServiceImpl.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/service/impl/WfDeployFormServiceImpl.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/service/impl/WfDeployServiceImpl.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/service/impl/WfFormServiceImpl.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/service/impl/WfInstanceServiceImpl.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/service/impl/WfModelServiceImpl.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/service/impl/WfProcessServiceImpl.java
delete mode 100644 klp-system/src/main/java/com/klp/workflow/service/impl/WfTaskServiceImpl.java
delete mode 100644 klp-system/src/main/resources/mapper/workflow/WfCategoryMapper.xml
delete mode 100644 klp-system/src/main/resources/mapper/workflow/WfCopyMapper.xml
delete mode 100644 klp-system/src/main/resources/mapper/workflow/WfDeployFormMapper.xml
delete mode 100644 klp-system/src/main/resources/mapper/workflow/WfFormMapper.xml
diff --git a/klp-admin/pom.xml b/klp-admin/pom.xml
index b55a60ea..c7d88bc5 100644
--- a/klp-admin/pom.xml
+++ b/klp-admin/pom.xml
@@ -78,12 +78,6 @@
klp-demo
-
-
- com.klp
- klp-flowable
-
-
com.klp
diff --git a/klp-admin/src/main/java/com/klp/web/controller/workflow/WfCategoryController.java b/klp-admin/src/main/java/com/klp/web/controller/workflow/WfCategoryController.java
deleted file mode 100644
index 9bbb1dda..00000000
--- a/klp-admin/src/main/java/com/klp/web/controller/workflow/WfCategoryController.java
+++ /dev/null
@@ -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 list(WfCategory category, PageQuery pageQuery) {
- return categoryService.queryPageList(category, pageQuery);
- }
-
- /**
- * 查询全部的流程分类列表
- */
- @SaCheckLogin
- @GetMapping("/listAll")
- public R> 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 list = categoryService.queryList(category);
- ExcelUtil.exportExcel(list, "流程分类", WfCategoryVo.class, response);
- }
-
- /**
- * 获取流程分类详细信息
- * @param categoryId 分类主键
- */
- @SaCheckPermission("workflow:category:query")
- @GetMapping("/{categoryId}")
- public R 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 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 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 remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] categoryIds) {
- return toAjax(categoryService.deleteWithValidByIds(Arrays.asList(categoryIds), true));
- }
-}
diff --git a/klp-admin/src/main/java/com/klp/web/controller/workflow/WfDeployController.java b/klp-admin/src/main/java/com/klp/web/controller/workflow/WfDeployController.java
deleted file mode 100644
index 8a132f94..00000000
--- a/klp-admin/src/main/java/com/klp/web/controller/workflow/WfDeployController.java
+++ /dev/null
@@ -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 list(ProcessQuery processQuery, PageQuery pageQuery) {
- return deployService.queryPageList(processQuery, pageQuery);
- }
-
- /**
- * 查询流程部署版本列表
- */
- @SaCheckPermission("workflow:deploy:list")
- @GetMapping("/publishList")
- public TableDataInfo 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 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 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 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));
- }
-}
diff --git a/klp-admin/src/main/java/com/klp/web/controller/workflow/WfFormController.java b/klp-admin/src/main/java/com/klp/web/controller/workflow/WfFormController.java
deleted file mode 100644
index 6aee11ea..00000000
--- a/klp-admin/src/main/java/com/klp/web/controller/workflow/WfFormController.java
+++ /dev/null
@@ -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 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 list = formService.queryList(bo);
- ExcelUtil.exportExcel(list, "流程表单", WfFormVo.class, response);
- }
-
- /**
- * 获取流程表单详细信息
- * @param formId 主键
- */
- @SaCheckPermission("workflow:form:query")
- @GetMapping(value = "/{formId}")
- public R 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 add(@RequestBody WfFormBo bo) {
- return toAjax(formService.insertForm(bo));
- }
-
- /**
- * 修改流程表单
- */
- @SaCheckPermission("workflow:form:edit")
- @Log(title = "流程表单", businessType = BusinessType.UPDATE)
- @PutMapping
- public R edit(@RequestBody WfFormBo bo) {
- return toAjax(formService.updateForm(bo));
- }
-
- /**
- * 删除流程表单
- * @param formIds 主键串
- */
- @SaCheckPermission("workflow:form:remove")
- @Log(title = "流程表单", businessType = BusinessType.DELETE)
- @DeleteMapping("/{formIds}")
- public R remove(@NotEmpty(message = "主键不能为空") @PathVariable Long[] formIds) {
- return toAjax(formService.deleteWithValidByIds(Arrays.asList(formIds)) ? 1 : 0);
- }
-
-
- /**
- * 挂载流程表单
- */
- @Log(title = "流程表单", businessType = BusinessType.INSERT)
- @PostMapping("/addDeployForm")
- public R addDeployForm(@RequestBody WfDeployForm deployForm) {
- return toAjax(deployFormService.insertWfDeployForm(deployForm));
- }
-}
diff --git a/klp-admin/src/main/java/com/klp/web/controller/workflow/WfInstanceController.java b/klp-admin/src/main/java/com/klp/web/controller/workflow/WfInstanceController.java
deleted file mode 100644
index d44b1ef5..00000000
--- a/klp-admin/src/main/java/com/klp/web/controller/workflow/WfInstanceController.java
+++ /dev/null
@@ -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));
- }
-}
diff --git a/klp-admin/src/main/java/com/klp/web/controller/workflow/WfModelController.java b/klp-admin/src/main/java/com/klp/web/controller/workflow/WfModelController.java
deleted file mode 100644
index 8eaf6cc0..00000000
--- a/klp-admin/src/main/java/com/klp/web/controller/workflow/WfModelController.java
+++ /dev/null
@@ -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 list(WfModelBo modelBo, PageQuery pageQuery) {
- return modelService.list(modelBo, pageQuery);
- }
-
- /**
- * 查询流程模型列表
- *
- * @param modelBo 流程模型对象
- * @param pageQuery 分页参数
- */
- @SaCheckPermission("workflow:model:list")
- @GetMapping("/historyList")
- public TableDataInfo historyList(WfModelBo modelBo, PageQuery pageQuery) {
- return modelService.historyList(modelBo, pageQuery);
- }
-
- /**
- * 获取流程模型详细信息
- *
- * @param modelId 模型主键
- */
- @SaCheckPermission("workflow:model:query")
- @GetMapping(value = "/{modelId}")
- public R 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 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 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 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 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 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 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 list = modelService.list(modelBo);
- List listVo = BeanUtil.copyToList(list, WfModelExportVo.class);
- List categoryVos = categoryService.queryList(new WfCategory());
- Map 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);
- }
-}
diff --git a/klp-admin/src/main/java/com/klp/web/controller/workflow/WfProcessController.java b/klp-admin/src/main/java/com/klp/web/controller/workflow/WfProcessController.java
deleted file mode 100644
index 203b2c87..00000000
--- a/klp-admin/src/main/java/com/klp/web/controller/workflow/WfProcessController.java
+++ /dev/null
@@ -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 startProcessList(ProcessQuery processQuery, PageQuery pageQuery) {
- return processService.selectPageStartProcessList(processQuery, pageQuery);
- }
-
- /**
- * 我拥有的流程
- */
- @SaCheckPermission("workflow:process:ownList")
- @GetMapping(value = "/ownList")
- public TableDataInfo ownProcessList(ProcessQuery processQuery, PageQuery pageQuery) {
- return processService.selectPageOwnProcessList(processQuery, pageQuery);
- }
-
- /**
- * 获取待办列表
- */
- @SaCheckPermission("workflow:process:todoList")
- @GetMapping(value = "/todoList")
- public TableDataInfo todoProcessList(ProcessQuery processQuery, PageQuery pageQuery) {
- return processService.selectPageTodoProcessList(processQuery, pageQuery);
- }
-
- /**
- * 获取待签列表
- *
- * @param processQuery 流程业务对象
- * @param pageQuery 分页参数
- */
- @SaCheckPermission("workflow:process:claimList")
- @GetMapping(value = "/claimList")
- public TableDataInfo claimProcessList(ProcessQuery processQuery, PageQuery pageQuery) {
- return processService.selectPageClaimProcessList(processQuery, pageQuery);
- }
-
- /**
- * 获取已办列表
- *
- * @param pageQuery 分页参数
- */
- @SaCheckPermission("workflow:process:finishedList")
- @GetMapping(value = "/finishedList")
- public TableDataInfo finishedProcessList(ProcessQuery processQuery, PageQuery pageQuery) {
- return processService.selectPageFinishedProcessList(processQuery, pageQuery);
- }
-
- /**
- * 获取抄送列表
- *
- * @param copyBo 流程抄送对象
- * @param pageQuery 分页参数
- */
- @SaCheckPermission("workflow:process:copyList")
- @GetMapping(value = "/copyList")
- public TableDataInfo 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 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 list = processService.selectOwnProcessList(processQuery);
- List 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 list = processService.selectTodoProcessList(processQuery);
- List 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 list = processService.selectClaimProcessList(processQuery);
- List 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 list = processService.selectFinishedProcessList(processQuery);
- List 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 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 start(@PathVariable(value = "processDefId") String processDefId, @RequestBody Map variables) {
- // 如果包含审批人信息,则处理审批人信息
- processService.startProcessByDefId(processDefId, variables);
- return R.ok("流程启动成功");
- }
-
- /**
- * 删除流程实例
- *
- * @param instanceIds 流程实例ID串
- */
- @DeleteMapping("/instance/{instanceIds}")
- public R delete(@PathVariable String[] instanceIds) {
- processService.deleteProcessByIds(instanceIds);
- return R.ok();
- }
-
- /**
- * 读取xml文件
- * @param processDefId 流程定义ID
- */
- @GetMapping("/bpmnXml/{processDefId}")
- public R 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));
- }
-}
diff --git a/klp-admin/src/main/java/com/klp/web/controller/workflow/WfTaskController.java b/klp-admin/src/main/java/com/klp/web/controller/workflow/WfTaskController.java
deleted file mode 100644
index 0708930e..00000000
--- a/klp-admin/src/main/java/com/klp/web/controller/workflow/WfTaskController.java
+++ /dev/null
@@ -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();
- }
- }
- }
-}
diff --git a/klp-admin/src/main/resources/application.yml b/klp-admin/src/main/resources/application.yml
index 80db18ba..fafb9741 100644
--- a/klp-admin/src/main/resources/application.yml
+++ b/klp-admin/src/main/resources/application.yml
@@ -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:
diff --git a/klp-flowable/pom.xml b/klp-flowable/pom.xml
deleted file mode 100644
index 6eca9b6a..00000000
--- a/klp-flowable/pom.xml
+++ /dev/null
@@ -1,37 +0,0 @@
-
-
-
- klp-oa
- com.klp
- 0.8.3
-
- 4.0.0
-
- klp-flowable
-
-
- flowable工作流
-
-
-
-
-
- com.klp
- klp-common
-
-
-
- org.flowable
- flowable-spring-boot-starter-process
-
-
-
- com.googlecode.aviator
- aviator
- 5.3.1
-
-
-
-
diff --git a/klp-flowable/src/main/java/com/klp/flowable/common/constant/ProcessConstants.java b/klp-flowable/src/main/java/com/klp/flowable/common/constant/ProcessConstants.java
deleted file mode 100644
index ee80c19e..00000000
--- a/klp-flowable/src/main/java/com/klp/flowable/common/constant/ProcessConstants.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package com.klp.flowable.common.constant;
-
-/**
- * 流程常量信息
- *
- * @author Xuan xuan
- * @date 2021/4/17 22:46
- */
-public class ProcessConstants {
-
- public static final String SUFFIX = ".bpmn";
-
- /**
- * 动态数据
- */
- public static final String DATA_TYPE = "dynamic";
-
- /**
- * 单个审批人
- */
- public static final String USER_TYPE_ASSIGNEE = "assignee";
-
-
- /**
- * 候选人
- */
- public static final String USER_TYPE_USERS = "candidateUsers";
-
-
- /**
- * 审批组
- */
- public static final String USER_TYPE_ROUPS = "candidateGroups";
-
- /**
- * 单个审批人
- */
- public static final String PROCESS_APPROVAL = "approval";
-
- /**
- * 会签人员
- */
- public static final String PROCESS_MULTI_INSTANCE_USER = "userList";
-
- /**
- * nameapace
- */
- public static final String NAMASPASE = "http://flowable.org/bpmn";
-
- /**
- * 会签节点
- */
- public static final String PROCESS_MULTI_INSTANCE = "multiInstance";
-
- /**
- * 自定义属性 dataType
- */
- public static final String PROCESS_CUSTOM_DATA_TYPE = "dataType";
-
- /**
- * 自定义属性 userType
- */
- public static final String PROCESS_CUSTOM_USER_TYPE = "userType";
-
- /**
- * 自定义属性 localScope
- */
- public static final String PROCESS_FORM_LOCAL_SCOPE = "localScope";
-
- /**
- * 自定义属性 流程状态
- */
- public static final String PROCESS_STATUS_KEY = "processStatus";
-
-
- /**
- * 流程跳过
- */
- public static final String FLOWABLE_SKIP_EXPRESSION_ENABLED = "_FLOWABLE_SKIP_EXPRESSION_ENABLED";
-
-
-}
diff --git a/klp-flowable/src/main/java/com/klp/flowable/common/constant/TaskConstants.java b/klp-flowable/src/main/java/com/klp/flowable/common/constant/TaskConstants.java
deleted file mode 100644
index da26affa..00000000
--- a/klp-flowable/src/main/java/com/klp/flowable/common/constant/TaskConstants.java
+++ /dev/null
@@ -1,23 +0,0 @@
-package com.klp.flowable.common.constant;
-
-/**
- * @author konbai
- * @createTime 2022/4/24 13:24
- */
-public class TaskConstants {
-
- /**
- * 流程发起人
- */
- public static final String PROCESS_INITIATOR = "initiator";
-
- /**
- * 角色候选组前缀
- */
- public static final String ROLE_GROUP_PREFIX = "ROLE";
-
- /**
- * 部门候选组前缀
- */
- public static final String DEPT_GROUP_PREFIX = "DEPT";
-}
diff --git a/klp-flowable/src/main/java/com/klp/flowable/common/enums/FlowComment.java b/klp-flowable/src/main/java/com/klp/flowable/common/enums/FlowComment.java
deleted file mode 100644
index 82d93d0c..00000000
--- a/klp-flowable/src/main/java/com/klp/flowable/common/enums/FlowComment.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.klp.flowable.common.enums;
-
-/**
- * 流程意见类型
- *
- * @author Xuan xuan
- * @date 2021/4/19
- */
-public enum FlowComment {
-
- /**
- * 说明
- */
- NORMAL("1", "正常"),
- REBACK("2", "退回"),
- REJECT("3", "驳回"),
- DELEGATE("4", "委派"),
- TRANSFER("5", "转办"),
- STOP("6", "终止"),
- REVOKE("7", "撤回");
-
- /**
- * 类型
- */
- private final String type;
-
- /**
- * 说明
- */
- private final String remark;
-
- FlowComment(String type, String remark) {
- this.type = type;
- this.remark = remark;
- }
-
- public String getType() {
- return type;
- }
-
- public String getRemark() {
- return remark;
- }
-}
diff --git a/klp-flowable/src/main/java/com/klp/flowable/common/enums/FormType.java b/klp-flowable/src/main/java/com/klp/flowable/common/enums/FormType.java
deleted file mode 100644
index 1fb544e4..00000000
--- a/klp-flowable/src/main/java/com/klp/flowable/common/enums/FormType.java
+++ /dev/null
@@ -1,33 +0,0 @@
-package com.klp.flowable.common.enums;
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-/**
- * @author KonBAI
- * @createTime 2022/6/28 9:51
- */
-@Getter
-@AllArgsConstructor
-public enum FormType {
-
- /**
- * 流程表单
- */
- PROCESS(0),
-
- /**
- * 外置表单
- */
- EXTERNAL(1),
-
- /**
- * 节点独立表单
- */
- INDEPENDENT(2);
-
- /**
- * 表单类型
- */
- private final Integer type;
-}
diff --git a/klp-flowable/src/main/java/com/klp/flowable/common/enums/ProcessStatus.java b/klp-flowable/src/main/java/com/klp/flowable/common/enums/ProcessStatus.java
deleted file mode 100644
index c93b9ad0..00000000
--- a/klp-flowable/src/main/java/com/klp/flowable/common/enums/ProcessStatus.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package com.klp.flowable.common.enums;
-
-import com.klp.common.utils.StringUtils;
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-/**
- * @author konbai
- * @since 2023/3/9 00:45
- */
-@Getter
-@AllArgsConstructor
-public enum ProcessStatus {
-
- /**
- * 进行中(审批中)
- */
- RUNNING("running"),
- /**
- * 已终止
- */
- TERMINATED("terminated"),
- /**
- * 已完成
- */
- COMPLETED("completed"),
- /**
- * 已取消
- */
- CANCELED("canceled");
-
- private final String status;
-
- public static ProcessStatus getProcessStatus(String str) {
- if (StringUtils.isNotBlank(str)) {
- for (ProcessStatus value : values()) {
- if (StringUtils.equalsIgnoreCase(str, value.getStatus())) {
- return value;
- }
- }
- }
- return null;
- }
-}
diff --git a/klp-flowable/src/main/java/com/klp/flowable/config/GlobalEventListenerConfig.java b/klp-flowable/src/main/java/com/klp/flowable/config/GlobalEventListenerConfig.java
deleted file mode 100644
index d6c00ca9..00000000
--- a/klp-flowable/src/main/java/com/klp/flowable/config/GlobalEventListenerConfig.java
+++ /dev/null
@@ -1,28 +0,0 @@
-package com.klp.flowable.config;
-
-import com.klp.flowable.listener.GlobalEventListener;
-import lombok.AllArgsConstructor;
-import org.flowable.common.engine.api.delegate.event.FlowableEngineEventType;
-import org.flowable.engine.RuntimeService;
-import org.springframework.context.ApplicationListener;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.context.event.ContextRefreshedEvent;
-
-/**
- * flowable全局监听配置
- *
- * @author ssc
- */
-@Configuration
-@AllArgsConstructor
-public class GlobalEventListenerConfig implements ApplicationListener {
-
- private final GlobalEventListener globalEventListener;
- private final RuntimeService runtimeService;
-
- @Override
- public void onApplicationEvent(ContextRefreshedEvent event) {
- // 流程正常结束
- runtimeService.addEventListener(globalEventListener, FlowableEngineEventType.PROCESS_COMPLETED);
- }
-}
diff --git a/klp-flowable/src/main/java/com/klp/flowable/config/MyDefaultProcessDiagramCanvas.java b/klp-flowable/src/main/java/com/klp/flowable/config/MyDefaultProcessDiagramCanvas.java
deleted file mode 100644
index b2530c17..00000000
--- a/klp-flowable/src/main/java/com/klp/flowable/config/MyDefaultProcessDiagramCanvas.java
+++ /dev/null
@@ -1,94 +0,0 @@
-package com.klp.flowable.config;
-
-import org.flowable.bpmn.model.AssociationDirection;
-import org.flowable.image.impl.DefaultProcessDiagramCanvas;
-
-import java.awt.*;
-import java.awt.geom.Line2D;
-import java.awt.geom.RoundRectangle2D;
-
-/**
- * @author XuanXuan
- * @date 2021-04-03
- */
-public class MyDefaultProcessDiagramCanvas extends DefaultProcessDiagramCanvas {
- //设置高亮线的颜色 这里我设置成绿色
- protected static Color HIGHLIGHT_SEQUENCEFLOW_COLOR = Color.GREEN;
-
- public MyDefaultProcessDiagramCanvas(int width, int height, int minX, int minY, String imageType, String activityFontName, String labelFontName, String annotationFontName, ClassLoader customClassLoader) {
- super(width, height, minX, minY, imageType, activityFontName, labelFontName, annotationFontName, customClassLoader);
- }
-
- public MyDefaultProcessDiagramCanvas(int width, int height, int minX, int minY, String imageType) {
- super(width, height, minX, minY, imageType);
- }
-
-
- /**
- * 画线颜色设置
- */
- @Override
- public void drawConnection(int[] xPoints, int[] yPoints, boolean conditional, boolean isDefault, String connectionType,
- AssociationDirection associationDirection, boolean highLighted, double scaleFactor) {
-
- Paint originalPaint = g.getPaint();
- Stroke originalStroke = g.getStroke();
-
- g.setPaint(CONNECTION_COLOR);
- if (connectionType.equals("association")) {
- g.setStroke(ASSOCIATION_STROKE);
- } else if (highLighted) {
- //设置线的颜色
- g.setPaint(originalPaint);
- g.setStroke(HIGHLIGHT_FLOW_STROKE);
- }
-
- for (int i = 1; i < xPoints.length; i++) {
- Integer sourceX = xPoints[i - 1];
- Integer sourceY = yPoints[i - 1];
- Integer targetX = xPoints[i];
- Integer targetY = yPoints[i];
- Line2D.Double line = new Line2D.Double(sourceX, sourceY, targetX, targetY);
- g.draw(line);
- }
-
- if (isDefault) {
- Line2D.Double line = new Line2D.Double(xPoints[0], yPoints[0], xPoints[1], yPoints[1]);
- drawDefaultSequenceFlowIndicator(line, scaleFactor);
- }
-
- if (conditional) {
- Line2D.Double line = new Line2D.Double(xPoints[0], yPoints[0], xPoints[1], yPoints[1]);
- drawConditionalSequenceFlowIndicator(line, scaleFactor);
- }
-
- if (associationDirection == AssociationDirection.ONE || associationDirection == AssociationDirection.BOTH) {
- Line2D.Double line = new Line2D.Double(xPoints[xPoints.length - 2], yPoints[xPoints.length - 2], xPoints[xPoints.length - 1], yPoints[xPoints.length - 1]);
- drawArrowHead(line, scaleFactor);
- }
- if (associationDirection == AssociationDirection.BOTH) {
- Line2D.Double line = new Line2D.Double(xPoints[1], yPoints[1], xPoints[0], yPoints[0]);
- drawArrowHead(line, scaleFactor);
- }
- g.setPaint(originalPaint);
- g.setStroke(originalStroke);
- }
-
- /**
- * 高亮节点设置
- */
- @Override
- public void drawHighLight(int x, int y, int width, int height) {
- Paint originalPaint = g.getPaint();
- Stroke originalStroke = g.getStroke();
- //设置高亮节点的颜色
- g.setPaint(HIGHLIGHT_COLOR);
- g.setStroke(THICK_TASK_BORDER_STROKE);
-
- RoundRectangle2D rect = new RoundRectangle2D.Double(x, y, width, height, 20, 20);
- g.draw(rect);
-
- g.setPaint(originalPaint);
- g.setStroke(originalStroke);
- }
-}
diff --git a/klp-flowable/src/main/java/com/klp/flowable/core/FormConf.java b/klp-flowable/src/main/java/com/klp/flowable/core/FormConf.java
deleted file mode 100644
index d5af5c90..00000000
--- a/klp-flowable/src/main/java/com/klp/flowable/core/FormConf.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package com.klp.flowable.core;
-
-import lombok.Data;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * 表单属性类
- *
- * @author KonBAI
- * @createTime 2022/8/6 18:54
- */
-@Data
-public class FormConf {
-
- /**
- * 标题
- */
- private String title;
- /**
- * 表单名
- */
- private String formRef;
- /**
- * 表单模型
- */
- private String formModel;
- /**
- * 表单尺寸
- */
- private String size;
- /**
- * 标签对齐
- */
- private String labelPosition;
- /**
- * 标签宽度
- */
- private Integer labelWidth;
- /**
- * 校验模型
- */
- private String formRules;
- /**
- * 栅格间隔
- */
- private Integer gutter;
- /**
- * 禁用表单
- */
- private Boolean disabled = false;
- /**
- * 栅格占据的列数
- */
- private Integer span;
- /**
- * 表单按钮
- */
- private Boolean formBtns = true;
- /**
- * 表单项
- */
- private List
-
-
- com.klp
- klp-flowable
-
-
com.klp
diff --git a/klp-system/src/main/java/com/klp/workflow/domain/WfCategory.java b/klp-system/src/main/java/com/klp/workflow/domain/WfCategory.java
deleted file mode 100644
index 4d22694e..00000000
--- a/klp-system/src/main/java/com/klp/workflow/domain/WfCategory.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.klp.workflow.domain;
-
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.klp.common.core.domain.BaseEntity;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import javax.validation.constraints.NotBlank;
-
-/**
- * 流程分类对象 wf_category
- *
- * @author KonBAI
- * @date 2022-01-15
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@TableName("wf_category")
-public class WfCategory extends BaseEntity {
-
- private static final long serialVersionUID=1L;
-
- /**
- * 分类ID
- */
- @TableId(value = "category_id")
- private Long categoryId;
- /**
- * 分类名称
- */
- @NotBlank(message = "分类名称不能为空")
- private String categoryName;
- /**
- * 分类编码
- */
- @NotBlank(message = "分类编码不能为空")
- private String code;
- /**
- * 备注
- */
- private String remark;
- /**
- * 删除标志(0代表存在 2代表删除)
- */
- @TableLogic
- private String delFlag;
-
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/domain/WfCopy.java b/klp-system/src/main/java/com/klp/workflow/domain/WfCopy.java
deleted file mode 100644
index 2ed4389d..00000000
--- a/klp-system/src/main/java/com/klp/workflow/domain/WfCopy.java
+++ /dev/null
@@ -1,74 +0,0 @@
-package com.klp.workflow.domain;
-
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableLogic;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.klp.common.core.domain.BaseEntity;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * 流程抄送对象 wf_copy
- *
- * @author KonBAI
- * @date 2022-05-19
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@TableName("wf_copy")
-public class WfCopy extends BaseEntity {
-
- private static final long serialVersionUID=1L;
-
- /**
- * 抄送主键
- */
- @TableId(value = "copy_id")
- private Long copyId;
- /**
- * 抄送标题
- */
- private String title;
- /**
- * 流程主键
- */
- private String processId;
- /**
- * 流程名称
- */
- private String processName;
- /**
- * 流程分类主键
- */
- private String categoryId;
- /**
- * 部署主键
- */
- private String deploymentId;
- /**
- * 流程实例主键
- */
- private String instanceId;
- /**
- * 任务主键
- */
- private String taskId;
- /**
- * 用户主键
- */
- private Long userId;
- /**
- * 发起人Id
- */
- private Long originatorId;
- /**
- * 发起人名称
- */
- private String originatorName;
- /**
- * 删除标志(0代表存在 2代表删除)
- */
- @TableLogic
- private String delFlag;
-
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/domain/WfDeployForm.java b/klp-system/src/main/java/com/klp/workflow/domain/WfDeployForm.java
deleted file mode 100644
index c11cc206..00000000
--- a/klp-system/src/main/java/com/klp/workflow/domain/WfDeployForm.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.klp.workflow.domain;
-
-import com.baomidou.mybatisplus.annotation.TableName;
-import lombok.Data;
-
-/**
- * 流程实例关联表单对象 sys_instance_form
- *
- * @author KonBAI
- * @createTime 2022/3/7 22:07
- */
-@Data
-@TableName("wf_deploy_form")
-public class WfDeployForm {
- private static final long serialVersionUID = 1L;
-
- /**
- * 流程部署主键
- */
- private String deployId;
-
- /**
- * 表单Key
- */
- private String formKey;
-
- /**
- * 节点Key
- */
- private String nodeKey;
-
- /**
- * 表单名称
- */
- private String formName;
-
- /**
- * 节点名称
- */
- private String nodeName;
-
- /**
- * 表单内容
- */
- private String content;
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/domain/WfForm.java b/klp-system/src/main/java/com/klp/workflow/domain/WfForm.java
deleted file mode 100644
index 762d5b44..00000000
--- a/klp-system/src/main/java/com/klp/workflow/domain/WfForm.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.klp.workflow.domain;
-
-import com.baomidou.mybatisplus.annotation.TableId;
-import com.baomidou.mybatisplus.annotation.TableName;
-import com.klp.common.core.domain.BaseEntity;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-/**
- * 流程表单对象 wf_form
- *
- * @author KonBAI
- * @createTime 2022/3/7 22:07
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-@TableName("wf_form")
-public class WfForm extends BaseEntity {
- private static final long serialVersionUID = 1L;
-
- /**
- * 表单主键
- */
- @TableId(value = "form_id")
- private Long formId;
-
- /**
- * 表单名称
- */
- private String formName;
-
- /**
- * 表单内容
- */
- private String content;
-
- /**
- * 备注
- */
- private String remark;
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/domain/bo/WfCopyBo.java b/klp-system/src/main/java/com/klp/workflow/domain/bo/WfCopyBo.java
deleted file mode 100644
index fd8eea91..00000000
--- a/klp-system/src/main/java/com/klp/workflow/domain/bo/WfCopyBo.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package com.klp.workflow.domain.bo;
-
-import com.klp.common.core.domain.BaseEntity;
-import com.klp.common.core.validate.AddGroup;
-import com.klp.common.core.validate.EditGroup;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-
-/**
- * 流程抄送业务对象 wf_copy
- *
- * @author klp
- * @date 2022-05-19
- */
-
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class WfCopyBo extends BaseEntity {
-
- /**
- * 抄送主键
- */
- @NotNull(message = "抄送主键不能为空", groups = { EditGroup.class })
- private Long copyId;
-
- /**
- * 抄送标题
- */
- @NotNull(message = "抄送标题不能为空", groups = { AddGroup.class, EditGroup.class })
- private String title;
-
- /**
- * 流程主键
- */
- @NotBlank(message = "流程主键不能为空", groups = { AddGroup.class, EditGroup.class })
- private String processId;
-
- /**
- * 流程名称
- */
- @NotBlank(message = "流程名称不能为空", groups = { AddGroup.class, EditGroup.class })
- private String processName;
-
- /**
- * 流程分类主键
- */
- @NotBlank(message = "流程分类主键不能为空", groups = { AddGroup.class, EditGroup.class })
- private String categoryId;
-
- /**
- * 任务主键
- */
- @NotBlank(message = "任务主键不能为空", groups = { AddGroup.class, EditGroup.class })
- private String taskId;
-
- /**
- * 用户主键
- */
- @NotNull(message = "用户主键不能为空", groups = { AddGroup.class, EditGroup.class })
- private Long userId;
-
- /**
- * 发起人Id
- */
- @NotNull(message = "发起人主键不能为空", groups = { AddGroup.class, EditGroup.class })
- private Long originatorId;
- /**
- * 发起人名称
- */
- @NotNull(message = "发起人名称不能为空", groups = { AddGroup.class, EditGroup.class })
- private String originatorName;
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/domain/bo/WfDesignerBo.java b/klp-system/src/main/java/com/klp/workflow/domain/bo/WfDesignerBo.java
deleted file mode 100644
index e4481e12..00000000
--- a/klp-system/src/main/java/com/klp/workflow/domain/bo/WfDesignerBo.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package com.klp.workflow.domain.bo;
-
-import com.klp.common.core.validate.AddGroup;
-import com.klp.common.core.validate.EditGroup;
-import lombok.Data;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-
-/**
- * 流程设计业务对象
- *
- * @author KonBAI
- * @createTime 2022/3/10 00:12
- */
-@Data
-public class WfDesignerBo {
-
- /**
- * 流程名称
- */
- @NotNull(message = "流程名称", groups = { AddGroup.class, EditGroup.class })
- private String name;
-
- /**
- * 流程分类
- */
- @NotBlank(message = "流程分类", groups = { AddGroup.class, EditGroup.class })
- private String category;
-
- /**
- * XML字符串
- */
- @NotBlank(message = "XML字符串", groups = { AddGroup.class, EditGroup.class })
- private String xml;
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/domain/bo/WfFormBo.java b/klp-system/src/main/java/com/klp/workflow/domain/bo/WfFormBo.java
deleted file mode 100644
index e5f94bb4..00000000
--- a/klp-system/src/main/java/com/klp/workflow/domain/bo/WfFormBo.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.klp.workflow.domain.bo;
-
-import com.klp.common.core.domain.BaseEntity;
-import com.klp.common.core.validate.AddGroup;
-import com.klp.common.core.validate.EditGroup;
-import lombok.Data;
-import lombok.EqualsAndHashCode;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-
-/**
- * 流程表单业务对象
- *
- * @author KonBAI
- * @createTime 2022/3/7 22:07
- */
-@Data
-@EqualsAndHashCode(callSuper = true)
-public class WfFormBo extends BaseEntity {
- private static final long serialVersionUID = 1L;
-
- /**
- * 表单主键
- */
- @NotNull(message = "表单ID不能为空", groups = { EditGroup.class })
- private Long formId;
-
- /**
- * 表单名称
- */
- @NotBlank(message = "表单名称不能为空", groups = { AddGroup.class, EditGroup.class })
- private String formName;
-
- /**
- * 表单内容
- */
- @NotBlank(message = "表单内容不能为空", groups = { AddGroup.class, EditGroup.class })
- private String content;
-
- /**
- * 备注
- */
- private String remark;
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/domain/bo/WfModelBo.java b/klp-system/src/main/java/com/klp/workflow/domain/bo/WfModelBo.java
deleted file mode 100644
index 99e5633b..00000000
--- a/klp-system/src/main/java/com/klp/workflow/domain/bo/WfModelBo.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package com.klp.workflow.domain.bo;
-
-import com.klp.common.core.validate.AddGroup;
-import com.klp.common.core.validate.EditGroup;
-import lombok.Data;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
-
-/**
- * 流程模型对象
- *
- * @author KonBAI
- * @createTime 2022/6/21 9:16
- */
-@Data
-public class WfModelBo {
- /**
- * 模型主键
- */
- @NotNull(message = "模型主键不能为空", groups = { EditGroup.class })
- private String modelId;
- /**
- * 模型名称
- */
- @NotNull(message = "模型名称不能为空", groups = { AddGroup.class, EditGroup.class })
- private String modelName;
- /**
- * 模型Key
- */
- @NotNull(message = "模型Key不能为空", groups = { AddGroup.class, EditGroup.class })
- private String modelKey;
- /**
- * 流程分类
- */
- @NotBlank(message = "流程分类不能为空", groups = { AddGroup.class, EditGroup.class })
- private String category;
- /**
- * 描述
- */
- private String description;
- /**
- * 表单类型
- */
- private Integer formType;
- /**
- * 表单主键
- */
- private Long formId;
- /**
- * 流程xml
- */
- private String bpmnXml;
- /**
- * 是否保存为新版本
- */
- private Boolean newVersion;
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/domain/bo/WfTaskBo.java b/klp-system/src/main/java/com/klp/workflow/domain/bo/WfTaskBo.java
deleted file mode 100644
index 832d49b6..00000000
--- a/klp-system/src/main/java/com/klp/workflow/domain/bo/WfTaskBo.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package com.klp.workflow.domain.bo;
-
-import lombok.Data;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * 流程任务业务对象
- *
- * @author KonBAI
- * @createTime 2022/3/10 00:12
- */
-@Data
-public class WfTaskBo {
- /**
- * 任务Id
- */
- private String taskId;
- /**
- * 任务名称
- */
- private String taskName;
- /**
- * 用户Id
- */
- private String userId;
- /**
- * 任务意见
- */
- private String comment;
- /**
- * 流程实例Id
- */
- private String procInsId;
- /**
- * 节点
- */
- private String targetKey;
- /**
- * 流程变量信息
- */
- private Map variables;
- /**
- * 审批人
- */
- private String assignee;
- /**
- * 候选人
- */
- private List candidateUsers;
- /**
- * 审批组
- */
- private List candidateGroups;
- /**
- * 抄送用户Id
- */
- private String copyUserIds;
- /**
- * 下一节点审批人
- */
- private String nextUserIds;
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/domain/dto/WfCommentDto.java b/klp-system/src/main/java/com/klp/workflow/domain/dto/WfCommentDto.java
deleted file mode 100644
index 2b986dfe..00000000
--- a/klp-system/src/main/java/com/klp/workflow/domain/dto/WfCommentDto.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.klp.workflow.domain.dto;
-
-import lombok.Builder;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * @author KonBAI
- * @createTime 2022/3/10 00:12
- */
-@Data
-@Builder
-public class WfCommentDto implements Serializable {
-
- /**
- * 意见类别 0 正常意见 1 退回意见 2 驳回意见
- */
- private String type;
-
- /**
- * 意见内容
- */
- private String comment;
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/domain/dto/WfMetaInfoDto.java b/klp-system/src/main/java/com/klp/workflow/domain/dto/WfMetaInfoDto.java
deleted file mode 100644
index 922ac45a..00000000
--- a/klp-system/src/main/java/com/klp/workflow/domain/dto/WfMetaInfoDto.java
+++ /dev/null
@@ -1,30 +0,0 @@
-package com.klp.workflow.domain.dto;
-
-import lombok.Data;
-
-/**
- * @author KonBAI
- * @createTime 2022/6/21 9:16
- */
-@Data
-public class WfMetaInfoDto {
-
- /**
- * 创建者(username)
- */
- private String createUser;
-
- /**
- * 流程描述
- */
- private String description;
- /**
- * 表单类型
- */
- private Integer formType;
- /**
- * 表单编号
- */
- private Long formId;
-
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/domain/dto/WfNextDto.java b/klp-system/src/main/java/com/klp/workflow/domain/dto/WfNextDto.java
deleted file mode 100644
index 9cde72d9..00000000
--- a/klp-system/src/main/java/com/klp/workflow/domain/dto/WfNextDto.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.klp.workflow.domain.dto;
-
-import com.klp.common.core.domain.entity.SysRole;
-import com.klp.common.core.domain.entity.SysUser;
-import lombok.Data;
-
-import java.io.Serializable;
-import java.util.List;
-
-/**
- * 动态人员、组
- * @author KonBAI
- * @createTime 2022/3/10 00:12
- */
-@Data
-public class WfNextDto implements Serializable {
-
- private String type;
-
- private String vars;
-
- private List userList;
-
- private List roleList;
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfCategoryVo.java b/klp-system/src/main/java/com/klp/workflow/domain/vo/WfCategoryVo.java
deleted file mode 100644
index 43eb2b99..00000000
--- a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfCategoryVo.java
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.klp.workflow.domain.vo;
-
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import lombok.Data;
-
-
-
-/**
- * 流程分类视图对象 flow_category
- *
- * @author KonBAI
- * @date 2022-01-15
- */
-@Data
-@ExcelIgnoreUnannotated
-public class WfCategoryVo {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 分类ID
- */
- @ExcelProperty(value = "分类ID")
- private Long categoryId;
-
- /**
- * 分类名称
- */
- @ExcelProperty(value = "分类名称")
- private String categoryName;
-
- /**
- * 分类编码
- */
- @ExcelProperty(value = "分类编码")
- private String code;
-
- /**
- * 备注
- */
- @ExcelProperty(value = "备注")
- private String remark;
-
-
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfClaimTaskExportVo.java b/klp-system/src/main/java/com/klp/workflow/domain/vo/WfClaimTaskExportVo.java
deleted file mode 100644
index 3e3956b1..00000000
--- a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfClaimTaskExportVo.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package com.klp.workflow.domain.vo;
-
-import com.alibaba.excel.annotation.ExcelProperty;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * 待签流程对象导出VO
- *
- * @author konbai
- */
-@Data
-@NoArgsConstructor
-public class WfClaimTaskExportVo implements Serializable {
- private static final long serialVersionUID = 1L;
-
- /**
- * 任务编号
- */
- @ExcelProperty(value = "任务编号")
- private String taskId;
-
- /**
- * 流程名称
- */
- @ExcelProperty(value = "流程名称")
- private String procDefName;
-
- /**
- * 任务节点
- */
- @ExcelProperty(value = "任务节点")
- private String taskName;
-
- /**
- * 流程版本
- */
- @ExcelProperty(value = "流程版本")
- private int procDefVersion;
-
- /**
- * 流程发起人名称
- */
- @ExcelProperty(value = "流程发起人")
- private String startUserName;
-
- /**
- * 接收时间
- */
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- @ExcelProperty(value = "接收时间")
- private Date createTime;
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfCommentVo.java b/klp-system/src/main/java/com/klp/workflow/domain/vo/WfCommentVo.java
deleted file mode 100644
index 95bdad83..00000000
--- a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfCommentVo.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package com.klp.workflow.domain.vo;
-
-import lombok.Data;
-
-import java.util.Date;
-
-/**
- * 流程批复视图对象
- *
- * @author konbai
- * @createTime 2022/4/4 02:03
- */
-@Data
-public class WfCommentVo {
-
- /**
- * 审批类别
- */
- private String type;
-
- /**
- * 批复内容
- */
- private String message;
-
- /**
- * 批复时间
- */
- private Date time;
-
-
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfCopyVo.java b/klp-system/src/main/java/com/klp/workflow/domain/vo/WfCopyVo.java
deleted file mode 100644
index 9846daa4..00000000
--- a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfCopyVo.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package com.klp.workflow.domain.vo;
-
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import lombok.Data;
-
-import java.util.Date;
-
-
-/**
- * 流程抄送视图对象 wf_copy
- *
- * @author klp
- * @date 2022-05-19
- */
-@Data
-@ExcelIgnoreUnannotated
-public class WfCopyVo {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 抄送主键
- */
- @ExcelProperty(value = "抄送主键")
- private Long copyId;
-
- /**
- * 抄送标题
- */
- @ExcelProperty(value = "抄送标题")
- private String title;
-
- /**
- * 流程主键
- */
- @ExcelProperty(value = "流程主键")
- private String processId;
-
- /**
- * 流程名称
- */
- @ExcelProperty(value = "流程名称")
- private String processName;
-
- /**
- * 流程分类主键
- */
- @ExcelProperty(value = "流程分类主键")
- private String categoryId;
-
- /**
- * 部署主键
- */
- @ExcelProperty(value = "部署主键")
- private String deploymentId;
-
- /**
- * 流程实例主键
- */
- @ExcelProperty(value = "流程实例主键")
- private String instanceId;
-
- /**
- * 任务主键
- */
- @ExcelProperty(value = "任务主键")
- private String taskId;
-
- /**
- * 用户主键
- */
- @ExcelProperty(value = "用户主键")
- private Long userId;
-
- /**
- * 发起人Id
- */
- @ExcelProperty(value = "发起人主键")
- private Long originatorId;
-
- /**
- * 发起人名称
- */
- @ExcelProperty(value = "发起人名称")
- private String originatorName;
-
- /**
- * 抄送时间(创建时间)
- */
- @ExcelProperty(value = "抄送时间")
- private Date createTime;
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfDefinitionVo.java b/klp-system/src/main/java/com/klp/workflow/domain/vo/WfDefinitionVo.java
deleted file mode 100644
index 2a63ba14..00000000
--- a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfDefinitionVo.java
+++ /dev/null
@@ -1,85 +0,0 @@
-package com.klp.workflow.domain.vo;
-
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import com.klp.common.annotation.ExcelDictFormat;
-import com.klp.common.convert.ExcelDictConvert;
-import lombok.Data;
-
-import java.util.Date;
-
-
-
-/**
- * 流程定义视图对象 workflow_definition
- *
- * @author KonBAI
- * @date 2022-01-17
- */
-@Data
-@ExcelIgnoreUnannotated
-public class WfDefinitionVo {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 流程定义ID
- */
- @ExcelProperty(value = "流程定义ID")
- private String definitionId;
-
- /**
- * 流程名称
- */
- @ExcelProperty(value = "流程名称")
- private String processName;
-
- /**
- * 流程Key
- */
- @ExcelProperty(value = "流程Key")
- private String processKey;
-
- /**
- * 分类编码
- */
- @ExcelProperty(value = "分类编码")
- private String category;
-
- /**
- * 版本
- */
- @ExcelProperty(value = "版本")
- private Integer version;
-
- /**
- * 表单ID
- */
- @ExcelProperty(value = "表单ID")
- private Long formId;
-
- /**
- * 表单名称
- */
- @ExcelProperty(value = "表单名称")
- private String formName;
-
- /**
- * 部署ID
- */
- @ExcelProperty(value = "部署ID")
- private String deploymentId;
-
- /**
- * 流程是否暂停(true:挂起 false:激活 )
- */
- @ExcelProperty(value = "流程是否挂起", converter = ExcelDictConvert.class)
- @ExcelDictFormat(readConverterExp = "true=挂起,false=激活")
- private Boolean suspended;
-
- /**
- * 部署时间
- */
- @ExcelProperty(value = "部署时间")
- private Date deploymentTime;
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfDeployFormVo.java b/klp-system/src/main/java/com/klp/workflow/domain/vo/WfDeployFormVo.java
deleted file mode 100644
index c196aaf9..00000000
--- a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfDeployFormVo.java
+++ /dev/null
@@ -1,45 +0,0 @@
-package com.klp.workflow.domain.vo;
-
-import lombok.Data;
-
-/**
- * 部署实例和表单关联视图对象
- *
- * @author KonBAI
- * @createTime 2022/7/17 18:29
- */
-@Data
-public class WfDeployFormVo {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 流程部署主键
- */
- private String deployId;
-
- /**
- * 表单Key
- */
- private String formKey;
-
- /**
- * 节点Key
- */
- private String nodeKey;
-
- /**
- * 表单名称
- */
- private String formName;
-
- /**
- * 节点名称
- */
- private String nodeName;
-
- /**
- * 表单内容
- */
- private String content;
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfDeployVo.java b/klp-system/src/main/java/com/klp/workflow/domain/vo/WfDeployVo.java
deleted file mode 100644
index 3852a81d..00000000
--- a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfDeployVo.java
+++ /dev/null
@@ -1,80 +0,0 @@
-package com.klp.workflow.domain.vo;
-
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import lombok.Data;
-
-import java.util.Date;
-
-
-/**
- * 流程部署视图对象
- *
- * @author KonBAI
- * @date 2022-06-30
- */
-@Data
-@ExcelIgnoreUnannotated
-public class WfDeployVo {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 流程定义ID
- */
- @ExcelProperty(value = "流程定义ID")
- private String definitionId;
-
- /**
- * 流程名称
- */
- @ExcelProperty(value = "流程名称")
- private String processName;
-
- /**
- * 流程Key
- */
- @ExcelProperty(value = "流程Key")
- private String processKey;
-
- /**
- * 分类编码
- */
- @ExcelProperty(value = "分类编码")
- private String category;
-
- /**
- * 版本
- */
- private Integer version;
-
- /**
- * 表单ID
- */
- @ExcelProperty(value = "表单ID")
- private Long formId;
-
- /**
- * 表单名称
- */
- @ExcelProperty(value = "表单名称")
- private String formName;
-
- /**
- * 部署ID
- */
- @ExcelProperty(value = "部署ID")
- private String deploymentId;
-
- /**
- * 流程定义状态: 1:激活 , 2:中止
- */
- @ExcelProperty(value = "流程定义状态: 1:激活 , 2:中止")
- private Boolean suspended;
-
- /**
- * 部署时间
- */
- @ExcelProperty(value = "部署时间")
- private Date deploymentTime;
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfDetailVo.java b/klp-system/src/main/java/com/klp/workflow/domain/vo/WfDetailVo.java
deleted file mode 100644
index 8de27e99..00000000
--- a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfDetailVo.java
+++ /dev/null
@@ -1,47 +0,0 @@
-package com.klp.workflow.domain.vo;
-
-import cn.hutool.core.util.ObjectUtil;
-import com.klp.flowable.core.FormConf;
-import lombok.Data;
-
-import java.util.List;
-
-/**
- * 流程详情视图对象
- *
- * @author KonBAI
- * @createTime 2022/8/7 15:01
- */
-@Data
-public class WfDetailVo {
-
- /**
- * 任务表单信息
- */
- private FormConf taskFormData;
-
- /**
- * 历史流程节点信息
- */
- private List historyProcNodeList;
-
- /**
- * 流程表单列表
- */
- private List processFormList;
-
- /**
- * 流程XML
- */
- private String bpmnXml;
-
- private WfViewerVo flowViewer;
-
- /**
- * 是否存在任务表单信息
- * @return true:存在;false:不存在
- */
- public Boolean isExistTaskForm() {
- return ObjectUtil.isNotEmpty(this.taskFormData);
- }
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfFinishedTaskExportVo.java b/klp-system/src/main/java/com/klp/workflow/domain/vo/WfFinishedTaskExportVo.java
deleted file mode 100644
index 250fe1e3..00000000
--- a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfFinishedTaskExportVo.java
+++ /dev/null
@@ -1,70 +0,0 @@
-package com.klp.workflow.domain.vo;
-
-import com.alibaba.excel.annotation.ExcelProperty;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * 已办流程对象导出VO
- *
- * @author konbai
- */
-@Data
-@NoArgsConstructor
-public class WfFinishedTaskExportVo implements Serializable {
- private static final long serialVersionUID = 1L;
-
- /**
- * 任务编号
- */
- @ExcelProperty(value = "任务编号")
- private String taskId;
-
- /**
- * 流程名称
- */
- @ExcelProperty(value = "流程名称")
- private String procDefName;
-
- /**
- * 任务节点
- */
- @ExcelProperty(value = "任务节点")
- private String taskName;
-
- /**
- * 流程版本
- */
- @ExcelProperty(value = "流程版本")
- private int procDefVersion;
-
- /**
- * 流程发起人名称
- */
- @ExcelProperty(value = "流程发起人")
- private String startUserName;
-
- /**
- * 接收时间
- */
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- @ExcelProperty(value = "接收时间")
- private Date createTime;
-
- /**
- * 审批时间
- */
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- @ExcelProperty(value = "审批时间")
- private Date finishTime;
-
- /**
- * 任务耗时
- */
- @ExcelProperty(value = "任务耗时")
- private String duration;
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfFormVo.java b/klp-system/src/main/java/com/klp/workflow/domain/vo/WfFormVo.java
deleted file mode 100644
index 2caef3d1..00000000
--- a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfFormVo.java
+++ /dev/null
@@ -1,42 +0,0 @@
-package com.klp.workflow.domain.vo;
-
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.alibaba.excel.annotation.ExcelProperty;
-import lombok.Data;
-
-/**
- * 流程分类视图对象
- *
- * @author KonBAI
- * @createTime 2022/3/7 22:07
- */
-@Data
-@ExcelIgnoreUnannotated
-public class WfFormVo {
-
- private static final long serialVersionUID = 1L;
-
- /**
- * 表单主键
- */
- @ExcelProperty(value = "表单ID")
- private Long formId;
-
- /**
- * 表单名称
- */
- @ExcelProperty(value = "表单名称")
- private String formName;
-
- /**
- * 表单内容
- */
- @ExcelProperty(value = "表单内容")
- private String content;
-
- /**
- * 备注
- */
- @ExcelProperty(value = "备注")
- private String remark;
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfModelExportVo.java b/klp-system/src/main/java/com/klp/workflow/domain/vo/WfModelExportVo.java
deleted file mode 100644
index 87c3f381..00000000
--- a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfModelExportVo.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.klp.workflow.domain.vo;
-
-import com.alibaba.excel.annotation.ExcelProperty;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * 流程模型对象导出VO
- *
- * @author konbai
- */
-@Data
-@NoArgsConstructor
-public class WfModelExportVo implements Serializable {
- private static final long serialVersionUID = 1L;
- /**
- * 模型ID
- */
- @ExcelProperty(value = "模型ID")
- private String modelId;
- /**
- * 模型Key
- */
- @ExcelProperty(value = "模型Key")
- private String modelKey;
- /**
- * 模型名称
- */
- @ExcelProperty(value = "模型名称")
- private String modelName;
- /**
- * 分类编码
- */
- @ExcelProperty(value = "分类编码")
- private String category;
- /**
- * 流程分类
- */
- @ExcelProperty(value = "流程分类")
- private String categoryName;
- /**
- * 模型版本
- */
- @ExcelProperty(value = "模型版本")
- private Integer version;
- /**
- * 模型描述
- */
- @ExcelProperty(value = "模型描述")
- private String description;
- /**
- * 创建时间
- */
- @ExcelProperty(value = "创建时间")
- private Date createTime;
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfModelVo.java b/klp-system/src/main/java/com/klp/workflow/domain/vo/WfModelVo.java
deleted file mode 100644
index 9463cd38..00000000
--- a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfModelVo.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package com.klp.workflow.domain.vo;
-
-import lombok.Data;
-
-import java.util.Date;
-
-/**
- * 流程模型视图对象
- *
- * @author KonBAI
- * @createTime 2022/6/21 9:16
- */
-@Data
-public class WfModelVo {
- /**
- * 模型ID
- */
- private String modelId;
- /**
- * 模型名称
- */
- private String modelName;
- /**
- * 模型Key
- */
- private String modelKey;
- /**
- * 分类编码
- */
- private String category;
- /**
- * 版本
- */
- private Integer version;
- /**
- * 表单类型
- */
- private Integer formType;
- /**
- * 表单ID
- */
- private Long formId;
- /**
- * 模型描述
- */
- private String description;
- /**
- * 创建时间
- */
- private Date createTime;
- /**
- * 流程xml
- */
- private String bpmnXml;
- /**
- * 表单内容
- */
- private String content;
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfOwnTaskExportVo.java b/klp-system/src/main/java/com/klp/workflow/domain/vo/WfOwnTaskExportVo.java
deleted file mode 100644
index 73358c75..00000000
--- a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfOwnTaskExportVo.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package com.klp.workflow.domain.vo;
-
-import com.alibaba.excel.annotation.ExcelProperty;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * 我拥有流程对象导出VO
- *
- * @author konbai
- */
-@Data
-@NoArgsConstructor
-public class WfOwnTaskExportVo implements Serializable {
- private static final long serialVersionUID = 1L;
-
- /**
- * 流程实例ID
- */
- @ExcelProperty(value = "流程编号")
- private String procInsId;
-
- /**
- * 流程名称
- */
- @ExcelProperty(value = "流程名称")
- private String procDefName;
-
- /**
- * 流程类别
- */
- @ExcelProperty(value = "流程类别")
- private String category;
-
- /**
- * 流程版本
- */
- @ExcelProperty(value = "流程版本")
- private int procDefVersion;
-
- /**
- * 提交时间
- */
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- @ExcelProperty(value = "提交时间")
- private Date createTime;
-
- /**
- * 流程状态
- */
- @ExcelProperty(value = "流程状态")
- private String status;
-
- /**
- * 任务耗时
- */
- @ExcelProperty(value = "任务耗时")
- private String duration;
-
- /**
- * 当前节点
- */
- @ExcelProperty(value = "当前节点")
- private String taskName;
-
- /**
- * 任务完成时间
- */
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- private Date finishTime;
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfProcNodeVo.java b/klp-system/src/main/java/com/klp/workflow/domain/vo/WfProcNodeVo.java
deleted file mode 100644
index 48b9baec..00000000
--- a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfProcNodeVo.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.klp.workflow.domain.vo;
-
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.Data;
-import org.flowable.engine.task.Comment;
-
-import java.io.Serializable;
-import java.util.Date;
-import java.util.List;
-
-/**
- * 工作流节点元素视图对象
- *
- * @author KonBAI
- * @createTime 2022/9/11 22:04
- */
-@Data
-@ExcelIgnoreUnannotated
-public class WfProcNodeVo implements Serializable {
- /**
- * 流程ID
- */
- private String procDefId;
- /**
- * 活动ID
- */
- private String activityId;
- /**
- * 活动名称
- */
- private String activityName;
- /**
- * 活动类型
- */
- private String activityType;
- /**
- * 活动耗时
- */
- private String duration;
- /**
- * 执行人Id
- */
- private Long assigneeId;
- /**
- * 执行人名称
- */
- private String assigneeName;
- /**
- * 候选执行人
- */
- private String candidate;
- /**
- * 任务意见
- */
- private List commentList;
- /**
- * 创建时间
- */
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- private Date createTime;
- /**
- * 结束时间
- */
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- private Date endTime;
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfTaskVo.java b/klp-system/src/main/java/com/klp/workflow/domain/vo/WfTaskVo.java
deleted file mode 100644
index a89647ac..00000000
--- a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfTaskVo.java
+++ /dev/null
@@ -1,132 +0,0 @@
-package com.klp.workflow.domain.vo;
-
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import com.klp.workflow.domain.dto.WfCommentDto;
-import lombok.Data;
-import org.flowable.engine.task.Comment;
-
-import java.io.Serializable;
-import java.util.Date;
-import java.util.List;
-
-/**
- * 工作流任务视图对象
- *
- * @author KonBAI
- * @createTime 2022/3/10 00:12
- */
-@Data
-@ExcelIgnoreUnannotated
-public class WfTaskVo implements Serializable {
- /**
- * 任务编号
- */
- private String taskId;
- /**
- * 任务名称
- */
- private String taskName;
- /**
- * 任务Key
- */
- private String taskDefKey;
- /**
- * 任务执行人Id
- */
- private Long assigneeId;
- /**
- * 部门名称
- */
- @Deprecated
- private String deptName;
- /**
- * 流程发起人部门名称
- */
- @Deprecated
- private String startDeptName;
- /**
- * 任务执行人名称
- */
- private String assigneeName;
- /**
- * 流程发起人Id
- */
- private Long startUserId;
- /**
- * 流程发起人名称
- */
- private String startUserName;
- /**
- * 流程类型
- */
- private String category;
- /**
- * 流程变量信息
- */
- private Object procVars;
- /**
- * 局部变量信息
- */
- private Object taskLocalVars;
- /**
- * 流程部署编号
- */
- private String deployId;
- /**
- * 流程ID
- */
- private String procDefId;
- /**
- * 流程key
- */
- private String procDefKey;
- /**
- * 流程定义名称
- */
- private String procDefName;
- /**
- * 流程定义内置使用版本
- */
- private int procDefVersion;
- /**
- * 流程实例ID
- */
- private String procInsId;
- /**
- * 历史流程实例ID
- */
- private String hisProcInsId;
- /**
- * 任务耗时
- */
- private String duration;
- /**
- * 任务意见
- */
- private WfCommentDto comment;
- /**
- * 任务意见
- */
- private List commentList;
- /**
- * 候选执行人
- */
- private String candidate;
- /**
- * 任务创建时间
- */
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- private Date createTime;
- /**
- * 任务完成时间
- */
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- private Date finishTime;
-
- /**
- * 流程状态
- */
- private String processStatus;
-
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfTodoTaskExportVo.java b/klp-system/src/main/java/com/klp/workflow/domain/vo/WfTodoTaskExportVo.java
deleted file mode 100644
index fb265050..00000000
--- a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfTodoTaskExportVo.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package com.klp.workflow.domain.vo;
-
-import com.alibaba.excel.annotation.ExcelProperty;
-import com.fasterxml.jackson.annotation.JsonFormat;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.io.Serializable;
-import java.util.Date;
-
-/**
- * 待办流程对象导出VO
- *
- * @author konbai
- */
-@Data
-@NoArgsConstructor
-public class WfTodoTaskExportVo implements Serializable {
- private static final long serialVersionUID = 1L;
-
- /**
- * 任务编号
- */
- @ExcelProperty(value = "任务编号")
- private String taskId;
-
- /**
- * 流程名称
- */
- @ExcelProperty(value = "流程名称")
- private String procDefName;
-
- /**
- * 任务节点
- */
- @ExcelProperty(value = "任务节点")
- private String taskName;
-
- /**
- * 流程版本
- */
- @ExcelProperty(value = "流程版本")
- private int procDefVersion;
-
- /**
- * 流程发起人名称
- */
- @ExcelProperty(value = "流程发起人")
- private String startUserName;
-
- /**
- * 接收时间
- */
- @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
- @ExcelProperty(value = "接收时间")
- private Date createTime;
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfViewerVo.java b/klp-system/src/main/java/com/klp/workflow/domain/vo/WfViewerVo.java
deleted file mode 100644
index 5a667efb..00000000
--- a/klp-system/src/main/java/com/klp/workflow/domain/vo/WfViewerVo.java
+++ /dev/null
@@ -1,41 +0,0 @@
-package com.klp.workflow.domain.vo;
-
-import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
-import lombok.AllArgsConstructor;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.util.Set;
-
-/**
- * 任务追踪视图对象
- *
- * @author KonBAI
- * @createTime 2022/1/8 19:42
- */
-@Data
-@NoArgsConstructor
-@AllArgsConstructor
-@ExcelIgnoreUnannotated
-public class WfViewerVo {
-
- /**
- * 获取流程实例的历史节点(去重)
- */
- private Set finishedTaskSet;
-
- /**
- * 已完成
- */
- private Set finishedSequenceFlowSet;
-
- /**
- * 获取流程实例当前正在待办的节点(去重)
- */
- private Set unfinishedTaskSet;
-
- /**
- * 已拒绝
- */
- private Set rejectedTaskSet;
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/handler/MultiInstanceHandler.java b/klp-system/src/main/java/com/klp/workflow/handler/MultiInstanceHandler.java
deleted file mode 100644
index eec08e45..00000000
--- a/klp-system/src/main/java/com/klp/workflow/handler/MultiInstanceHandler.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package com.klp.workflow.handler;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.toolkit.SimpleQuery;
-import com.klp.common.core.domain.entity.SysUser;
-import com.klp.flowable.common.constant.ProcessConstants;
-import com.klp.system.domain.SysUserRole;
-import lombok.AllArgsConstructor;
-import org.flowable.bpmn.model.FlowElement;
-import org.flowable.bpmn.model.UserTask;
-import org.flowable.engine.delegate.DelegateExecution;
-import org.springframework.stereotype.Component;
-
-import java.util.ArrayList;
-import java.util.LinkedHashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.stream.Collectors;
-
-/**
- * 多实例处理类
- *
- * @author KonBAI
- */
-@AllArgsConstructor
-@Component("multiInstanceHandler")
-public class MultiInstanceHandler {
-
- public Set getUserIds(DelegateExecution execution) {
- Set candidateUserIds = new LinkedHashSet<>();
- FlowElement flowElement = execution.getCurrentFlowElement();
- if (ObjectUtil.isNotEmpty(flowElement) && flowElement instanceof UserTask) {
- UserTask userTask = (UserTask) flowElement;
- String dataType = userTask.getAttributeValue(ProcessConstants.NAMASPASE, ProcessConstants.PROCESS_CUSTOM_DATA_TYPE);
- if ("USERS".equals(dataType) && CollUtil.isNotEmpty(userTask.getCandidateUsers())) {
- // 添加候选用户id
- candidateUserIds.addAll(userTask.getCandidateUsers());
- } else if (CollUtil.isNotEmpty(userTask.getCandidateGroups())) {
- // 获取组的ID,角色ID集合或部门ID集合
- List groups = userTask.getCandidateGroups().stream()
- .map(item -> Long.parseLong(item.substring(4)))
- .collect(Collectors.toList());
- List userIds = new ArrayList<>();
- if ("ROLES".equals(dataType)) {
- // 通过角色id,获取所有用户id集合
- LambdaQueryWrapper lqw = Wrappers.lambdaQuery(SysUserRole.class).select(SysUserRole::getUserId).in(SysUserRole::getRoleId, groups);
- userIds = SimpleQuery.list(lqw, SysUserRole::getUserId);
- } else if ("DEPTS".equals(dataType)) {
- // 通过部门id,获取所有用户id集合
- LambdaQueryWrapper lqw = Wrappers.lambdaQuery(SysUser.class).select(SysUser::getUserId).in(SysUser::getDeptId, groups);
- userIds = SimpleQuery.list(lqw, SysUser::getUserId);
- }
- // 添加候选用户id
- userIds.forEach(id -> candidateUserIds.add(String.valueOf(id)));
- }
- }
- return candidateUserIds;
- }
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/mapper/WfCategoryMapper.java b/klp-system/src/main/java/com/klp/workflow/mapper/WfCategoryMapper.java
deleted file mode 100644
index 048938fa..00000000
--- a/klp-system/src/main/java/com/klp/workflow/mapper/WfCategoryMapper.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.klp.workflow.mapper;
-
-import com.klp.common.core.mapper.BaseMapperPlus;
-import com.klp.workflow.domain.WfCategory;
-import com.klp.workflow.domain.vo.WfCategoryVo;
-
-/**
- * 流程分类Mapper接口
- *
- * @author KonBAI
- * @date 2022-01-15
- */
-public interface WfCategoryMapper extends BaseMapperPlus {
-
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/mapper/WfCopyMapper.java b/klp-system/src/main/java/com/klp/workflow/mapper/WfCopyMapper.java
deleted file mode 100644
index 06a9d9b4..00000000
--- a/klp-system/src/main/java/com/klp/workflow/mapper/WfCopyMapper.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.klp.workflow.mapper;
-
-import com.klp.common.core.mapper.BaseMapperPlus;
-import com.klp.workflow.domain.WfCopy;
-import com.klp.workflow.domain.vo.WfCopyVo;
-
-/**
- * 流程抄送Mapper接口
- *
- * @author KonBAI
- * @date 2022-05-19
- */
-public interface WfCopyMapper extends BaseMapperPlus {
-
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/mapper/WfDeployFormMapper.java b/klp-system/src/main/java/com/klp/workflow/mapper/WfDeployFormMapper.java
deleted file mode 100644
index 50f112a0..00000000
--- a/klp-system/src/main/java/com/klp/workflow/mapper/WfDeployFormMapper.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.klp.workflow.mapper;
-
-import com.klp.common.core.mapper.BaseMapperPlus;
-import com.klp.workflow.domain.WfDeployForm;
-import com.klp.workflow.domain.vo.WfDeployFormVo;
-
-/**
- * 流程实例关联表单Mapper接口
- *
- * @author KonBAI
- * @createTime 2022/3/7 22:07
- */
-public interface WfDeployFormMapper extends BaseMapperPlus {
-
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/mapper/WfFormMapper.java b/klp-system/src/main/java/com/klp/workflow/mapper/WfFormMapper.java
deleted file mode 100644
index b8c4a4c5..00000000
--- a/klp-system/src/main/java/com/klp/workflow/mapper/WfFormMapper.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package com.klp.workflow.mapper;
-
-import com.baomidou.mybatisplus.core.conditions.Wrapper;
-import com.baomidou.mybatisplus.core.toolkit.Constants;
-import com.klp.common.core.mapper.BaseMapperPlus;
-import com.klp.workflow.domain.WfForm;
-import com.klp.workflow.domain.vo.WfFormVo;
-import org.apache.ibatis.annotations.Param;
-
-import java.util.List;
-
-/**
- * 流程表单Mapper接口
- *
- * @author KonBAI
- * @createTime 2022/3/7 22:07
- */
-public interface WfFormMapper extends BaseMapperPlus {
-
- List selectFormVoList(@Param(Constants.WRAPPER) Wrapper queryWrapper);
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/service/IWfCategoryService.java b/klp-system/src/main/java/com/klp/workflow/service/IWfCategoryService.java
deleted file mode 100644
index c62df90b..00000000
--- a/klp-system/src/main/java/com/klp/workflow/service/IWfCategoryService.java
+++ /dev/null
@@ -1,64 +0,0 @@
-package com.klp.workflow.service;
-
-import com.klp.common.core.domain.PageQuery;
-import com.klp.common.core.page.TableDataInfo;
-import com.klp.workflow.domain.WfCategory;
-import com.klp.workflow.domain.vo.WfCategoryVo;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * 流程分类Service接口
- *
- * @author KonBAI
- * @date 2022-01-15
- */
-public interface IWfCategoryService {
- /**
- * 查询单个
- * @return
- */
- WfCategoryVo queryById(Long categoryId);
-
- /**
- * 查询列表
- */
- TableDataInfo queryPageList(WfCategory category, PageQuery pageQuery);
-
- /**
- * 查询列表
- */
- List queryList(WfCategory category);
-
- /**
- * 新增流程分类
- *
- * @param category 流程分类信息
- * @return 结果
- */
- int insertCategory(WfCategory category);
-
- /**
- * 编辑流程分类
- * @param category 流程分类信息
- * @return 结果
- */
- int updateCategory(WfCategory category);
-
- /**
- * 校验并删除数据
- * @param ids 主键集合
- * @param isValid 是否校验,true-删除前校验,false-不校验
- * @return 结果
- */
- int deleteWithValidByIds(Collection ids, Boolean isValid);
-
- /**
- * 校验分类编码是否唯一
- *
- * @param category 流程分类
- * @return 结果
- */
- boolean checkCategoryCodeUnique(WfCategory category);
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/service/IWfCopyService.java b/klp-system/src/main/java/com/klp/workflow/service/IWfCopyService.java
deleted file mode 100644
index fc4e5ce1..00000000
--- a/klp-system/src/main/java/com/klp/workflow/service/IWfCopyService.java
+++ /dev/null
@@ -1,49 +0,0 @@
-package com.klp.workflow.service;
-
-import com.klp.common.core.domain.PageQuery;
-import com.klp.common.core.page.TableDataInfo;
-import com.klp.workflow.domain.bo.WfCopyBo;
-import com.klp.workflow.domain.bo.WfTaskBo;
-import com.klp.workflow.domain.vo.WfCopyVo;
-
-import java.util.List;
-
-/**
- * 流程抄送Service接口
- *
- * @author KonBAI
- * @date 2022-05-19
- */
-public interface IWfCopyService {
-
- /**
- * 查询流程抄送
- *
- * @param copyId 流程抄送主键
- * @return 流程抄送
- */
- WfCopyVo queryById(Long copyId);
-
- /**
- * 查询流程抄送列表
- *
- * @param wfCopy 流程抄送
- * @return 流程抄送集合
- */
- TableDataInfo selectPageList(WfCopyBo wfCopy, PageQuery pageQuery);
-
- /**
- * 查询流程抄送列表
- *
- * @param wfCopy 流程抄送
- * @return 流程抄送集合
- */
- List selectList(WfCopyBo wfCopy);
-
- /**
- * 抄送
- * @param taskBo
- * @return
- */
- Boolean makeCopy(WfTaskBo taskBo);
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/service/IWfDeployFormService.java b/klp-system/src/main/java/com/klp/workflow/service/IWfDeployFormService.java
deleted file mode 100644
index a0658e68..00000000
--- a/klp-system/src/main/java/com/klp/workflow/service/IWfDeployFormService.java
+++ /dev/null
@@ -1,39 +0,0 @@
-package com.klp.workflow.service;
-
-import com.klp.workflow.domain.WfDeployForm;
-import com.klp.workflow.domain.vo.WfFormVo;
-import org.flowable.bpmn.model.BpmnModel;
-
-/**
- * 流程实例关联表单Service接口
- *
- * @author KonBAI
- * @createTime 2022/3/7 22:07
- */
-public interface IWfDeployFormService {
-
- /**
- * 新增流程实例关联表单
- *
- * @param wfDeployForm 流程实例关联表单
- * @return 结果
- */
- int insertWfDeployForm(WfDeployForm wfDeployForm);
-
- /**
- * 保存流程实例关联表单
- * @param deployId 部署ID
- * @param bpmnModel bpmnModel对象
- * @return
- */
- boolean saveInternalDeployForm(String deployId, BpmnModel bpmnModel);
-
- /**
- * 查询流程挂着的表单
- *
- * @param deployId
- * @return
- */
- @Deprecated
- WfFormVo selectDeployFormByDeployId(String deployId);
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/service/IWfDeployService.java b/klp-system/src/main/java/com/klp/workflow/service/IWfDeployService.java
deleted file mode 100644
index f30714f7..00000000
--- a/klp-system/src/main/java/com/klp/workflow/service/IWfDeployService.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package com.klp.workflow.service;
-
-import com.klp.common.core.domain.PageQuery;
-import com.klp.common.core.page.TableDataInfo;
-import com.klp.flowable.core.domain.ProcessQuery;
-import com.klp.workflow.domain.vo.WfDeployVo;
-
-import java.util.List;
-
-/**
- * @author KonBAI
- * @createTime 2022/6/30 9:03
- */
-public interface IWfDeployService {
-
- TableDataInfo queryPageList(ProcessQuery processQuery, PageQuery pageQuery);
-
- TableDataInfo queryPublishList(String processKey, PageQuery pageQuery);
-
- void updateState(String definitionId, String stateCode);
-
- String queryBpmnXmlById(String definitionId);
-
- void deleteByIds(List deployIds);
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/service/IWfFormService.java b/klp-system/src/main/java/com/klp/workflow/service/IWfFormService.java
deleted file mode 100644
index 6cdbbcb6..00000000
--- a/klp-system/src/main/java/com/klp/workflow/service/IWfFormService.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package com.klp.workflow.service;
-
-import com.klp.common.core.domain.PageQuery;
-import com.klp.common.core.page.TableDataInfo;
-import com.klp.workflow.domain.bo.WfFormBo;
-import com.klp.workflow.domain.vo.WfFormVo;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * 表单
- *
- * @author KonBAI
- * @createTime 2022/3/7 22:07
- */
-public interface IWfFormService {
- /**
- * 查询流程表单
- *
- * @param formId 流程表单ID
- * @return 流程表单
- */
- WfFormVo queryById(Long formId);
-
- /**
- * 查询流程表单列表
- *
- * @param bo 流程表单
- * @return 流程表单集合
- */
- TableDataInfo queryPageList(WfFormBo bo, PageQuery pageQuery);
-
- /**
- * 查询流程表单列表
- *
- * @param bo 流程表单
- * @return 流程表单集合
- */
- List queryList(WfFormBo bo);
-
- /**
- * 新增流程表单
- *
- * @param bo 流程表单
- * @return 结果
- */
- int insertForm(WfFormBo bo);
-
- /**
- * 修改流程表单
- *
- * @param bo 流程表单
- * @return 结果
- */
- int updateForm(WfFormBo bo);
-
- /**
- * 批量删除流程表单
- *
- * @param formIds 需要删除的流程表单ID
- * @return 结果
- */
- Boolean deleteWithValidByIds(Collection formIds);
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/service/IWfInstanceService.java b/klp-system/src/main/java/com/klp/workflow/service/IWfInstanceService.java
deleted file mode 100644
index fe00c25b..00000000
--- a/klp-system/src/main/java/com/klp/workflow/service/IWfInstanceService.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package com.klp.workflow.service;
-
-import com.klp.workflow.domain.bo.WfTaskBo;
-import org.flowable.engine.history.HistoricProcessInstance;
-
-import java.util.Map;
-
-/**
- * @author KonBAI
- * @createTime 2022/3/10 00:12
- */
-public interface IWfInstanceService {
-
- /**
- * 结束流程实例
- *
- * @param vo
- */
- void stopProcessInstance(WfTaskBo vo);
-
- /**
- * 激活或挂起流程实例
- *
- * @param state 状态
- * @param instanceId 流程实例ID
- */
- void updateState(Integer state, String instanceId);
-
- /**
- * 删除流程实例ID
- *
- * @param instanceId 流程实例ID
- * @param deleteReason 删除原因
- */
- void delete(String instanceId, String deleteReason);
-
- /**
- * 根据实例ID查询历史实例数据
- *
- * @param processInstanceId
- * @return
- */
- HistoricProcessInstance getHistoricProcessInstanceById(String processInstanceId);
-
-
- /**
- * 查询流程详情信息
- * @param procInsId 流程实例ID
- * @param deployId 流程部署ID
- */
- Map queryDetailProcess(String procInsId, String deployId);
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/service/IWfModelService.java b/klp-system/src/main/java/com/klp/workflow/service/IWfModelService.java
deleted file mode 100644
index 3c2cd31a..00000000
--- a/klp-system/src/main/java/com/klp/workflow/service/IWfModelService.java
+++ /dev/null
@@ -1,71 +0,0 @@
-package com.klp.workflow.service;
-
-import com.klp.common.core.domain.PageQuery;
-import com.klp.common.core.page.TableDataInfo;
-import com.klp.workflow.domain.bo.WfModelBo;
-import com.klp.workflow.domain.vo.WfModelVo;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * @author KonBAI
- * @createTime 2022/6/21 9:11
- */
-public interface IWfModelService {
-
- /**
- * 查询流程模型列表
- */
- TableDataInfo list(WfModelBo modelBo, PageQuery pageQuery);
-
- /**
- * 查询流程模型列表
- */
- List list(WfModelBo modelBo);
-
- /**
- * 查询流程模型列表
- */
- TableDataInfo historyList(WfModelBo modelBo, PageQuery pageQuery);
-
- /**
- * 查询流程模型详情信息
- */
- WfModelVo getModel(String modelId);
-
- /**
- * 查询流程表单详细信息
- */
- String queryBpmnXmlById(String modelId);
-
- /**
- * 新增模型信息
- */
- void insertModel(WfModelBo modelBo);
-
- /**
- * 修改模型信息
- */
- void updateModel(WfModelBo modelBo);
-
- /**
- * 保存流程模型信息
- */
- void saveModel(WfModelBo modelBo);
-
- /**
- * 设为最新流程模型
- */
- void latestModel(String modelId);
-
- /**
- * 删除流程模型
- */
- void deleteByIds(Collection ids);
-
- /**
- * 部署流程模型
- */
- boolean deployModel(String modelId);
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/service/IWfProcessService.java b/klp-system/src/main/java/com/klp/workflow/service/IWfProcessService.java
deleted file mode 100644
index 3127b796..00000000
--- a/klp-system/src/main/java/com/klp/workflow/service/IWfProcessService.java
+++ /dev/null
@@ -1,116 +0,0 @@
-package com.klp.workflow.service;
-
-import com.klp.common.core.domain.PageQuery;
-import com.klp.common.core.page.TableDataInfo;
-import com.klp.flowable.core.FormConf;
-import com.klp.flowable.core.domain.ProcessQuery;
-import com.klp.workflow.domain.vo.WfDefinitionVo;
-import com.klp.workflow.domain.vo.WfDetailVo;
-import com.klp.workflow.domain.vo.WfTaskVo;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author KonBAI
- * @createTime 2022/3/24 18:57
- */
-public interface IWfProcessService {
-
- /**
- * 查询可发起流程列表
- * @param pageQuery 分页参数
- * @return
- */
- TableDataInfo selectPageStartProcessList(ProcessQuery processQuery, PageQuery pageQuery);
-
- /**
- * 查询可发起流程列表
- */
- List selectStartProcessList(ProcessQuery processQuery);
-
- /**
- * 查询我的流程列表
- * @param pageQuery 分页参数
- */
- TableDataInfo selectPageOwnProcessList(ProcessQuery processQuery, PageQuery pageQuery);
-
- /**
- * 查询我的流程列表
- */
- List selectOwnProcessList(ProcessQuery processQuery);
-
- /**
- * 查询代办任务列表
- * @param pageQuery 分页参数
- */
- TableDataInfo selectPageTodoProcessList(ProcessQuery processQuery, PageQuery pageQuery);
-
- /**
- * 查询代办任务列表
- */
- List selectTodoProcessList(ProcessQuery processQuery);
-
- /**
- * 查询待签任务列表
- * @param pageQuery 分页参数
- */
- TableDataInfo selectPageClaimProcessList(ProcessQuery processQuery, PageQuery pageQuery);
-
- /**
- * 查询待签任务列表
- */
- List selectClaimProcessList(ProcessQuery processQuery);
-
- /**
- * 查询已办任务列表
- * @param pageQuery 分页参数
- */
- TableDataInfo selectPageFinishedProcessList(ProcessQuery processQuery, PageQuery pageQuery);
-
- /**
- * 查询已办任务列表
- */
- List selectFinishedProcessList(ProcessQuery processQuery);
-
- /**
- * 查询流程部署关联表单信息
- * @param definitionId 流程定义ID
- * @param deployId 部署ID
- */
- FormConf selectFormContent(String definitionId, String deployId, String procInsId);
-
- /**
- * 启动流程实例
- * @param procDefId 流程定义ID
- * @param variables 扩展参数
- */
- void startProcessByDefId(String procDefId, Map variables);
-
- /**
- * 通过DefinitionKey启动流程
- * @param procDefKey 流程定义Key
- * @param variables 扩展参数
- */
- void startProcessByDefKey(String procDefKey, Map variables);
-
- /**
- * 删除流程实例
- */
- void deleteProcessByIds(String[] instanceIds);
-
-
- /**
- * 读取xml文件
- * @param processDefId 流程定义ID
- */
- String queryBpmnXmlById(String processDefId);
-
-
- /**
- * 查询流程任务详情信息
- * @param procInsId 流程实例ID
- * @param taskId 任务ID
- */
- WfDetailVo queryProcessDetail(String procInsId, String taskId);
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/service/IWfTaskService.java b/klp-system/src/main/java/com/klp/workflow/service/IWfTaskService.java
deleted file mode 100644
index 6f5e8e17..00000000
--- a/klp-system/src/main/java/com/klp/workflow/service/IWfTaskService.java
+++ /dev/null
@@ -1,117 +0,0 @@
-package com.klp.workflow.service;
-
-import com.klp.workflow.domain.bo.WfTaskBo;
-import org.flowable.bpmn.model.FlowElement;
-import org.flowable.engine.runtime.ProcessInstance;
-
-import java.io.InputStream;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author KonBAI
- * @createTime 2022/3/10 00:12
- */
-public interface IWfTaskService {
-
- /**
- * 审批任务
- *
- * @param task 请求实体参数
- */
- void complete(WfTaskBo task);
-
- /**
- * 拒绝任务
- *
- * @param taskBo
- */
- void taskReject(WfTaskBo taskBo);
-
-
- /**
- * 退回任务
- *
- * @param bo 请求实体参数
- */
- void taskReturn(WfTaskBo bo);
-
- /**
- * 获取所有可回退的节点
- *
- * @param bo
- * @return
- */
- List findReturnTaskList(WfTaskBo bo);
-
- /**
- * 删除任务
- *
- * @param bo 请求实体参数
- */
- void deleteTask(WfTaskBo bo);
-
- /**
- * 认领/签收任务
- *
- * @param bo 请求实体参数
- */
- void claim(WfTaskBo bo);
-
- /**
- * 取消认领/签收任务
- *
- * @param bo 请求实体参数
- */
- void unClaim(WfTaskBo bo);
-
- /**
- * 委派任务
- *
- * @param bo 请求实体参数
- */
- void delegateTask(WfTaskBo bo);
-
-
- /**
- * 转办任务
- *
- * @param bo 请求实体参数
- */
- void transferTask(WfTaskBo bo);
-
- /**
- * 取消申请
- * @param bo
- * @return
- */
- void stopProcess(WfTaskBo bo);
-
- /**
- * 撤回流程
- * @param bo
- * @return
- */
- void revokeProcess(WfTaskBo bo);
-
- /**
- * 获取流程过程图
- * @param processId
- * @return
- */
- InputStream diagram(String processId);
-
- /**
- * 获取流程变量
- * @param taskId 任务ID
- * @return 流程变量
- */
- Map getProcessVariables(String taskId);
-
- /**
- * 启动第一个任务
- * @param processInstance 流程实例
- * @param variables 流程参数
- */
- void startFirstTask(ProcessInstance processInstance, Map variables);
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/service/impl/WfCategoryServiceImpl.java b/klp-system/src/main/java/com/klp/workflow/service/impl/WfCategoryServiceImpl.java
deleted file mode 100644
index 71aa34c9..00000000
--- a/klp-system/src/main/java/com/klp/workflow/service/impl/WfCategoryServiceImpl.java
+++ /dev/null
@@ -1,93 +0,0 @@
-package com.klp.workflow.service.impl;
-
-import cn.hutool.core.bean.BeanUtil;
-import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.klp.common.core.domain.PageQuery;
-import com.klp.common.core.page.TableDataInfo;
-import com.klp.common.utils.StringUtils;
-import com.klp.workflow.domain.WfCategory;
-import com.klp.workflow.domain.vo.WfCategoryVo;
-import com.klp.workflow.mapper.WfCategoryMapper;
-import com.klp.workflow.service.IWfCategoryService;
-import lombok.RequiredArgsConstructor;
-import org.springframework.stereotype.Service;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 流程分类Service业务层处理
- *
- * @author KonBAI
- * @date 2022-01-15
- */
-@RequiredArgsConstructor
-@Service
-public class WfCategoryServiceImpl implements IWfCategoryService {
-
- private final WfCategoryMapper baseMapper;
-
- @Override
- public WfCategoryVo queryById(Long categoryId){
- return baseMapper.selectVoById(categoryId);
- }
-
- @Override
- public TableDataInfo queryPageList(WfCategory category, PageQuery pageQuery) {
- LambdaQueryWrapper lqw = buildQueryWrapper(category);
- Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
- return TableDataInfo.build(result);
- }
-
- @Override
- public List queryList(WfCategory category) {
- LambdaQueryWrapper lqw = buildQueryWrapper(category);
- return baseMapper.selectVoList(lqw);
- }
-
- private LambdaQueryWrapper buildQueryWrapper(WfCategory category) {
- Map params = category.getParams();
- LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
- lqw.like(StringUtils.isNotBlank(category.getCategoryName()), WfCategory::getCategoryName, category.getCategoryName());
- lqw.eq(StringUtils.isNotBlank(category.getCode()), WfCategory::getCode, category.getCode());
- return lqw;
- }
-
- @Override
- public int insertCategory(WfCategory categoryBo) {
- WfCategory add = BeanUtil.toBean(categoryBo, WfCategory.class);
- return baseMapper.insert(add);
- }
-
- @Override
- public int updateCategory(WfCategory categoryBo) {
- WfCategory update = BeanUtil.toBean(categoryBo, WfCategory.class);
- return baseMapper.updateById(update);
- }
-
- @Override
- public int deleteWithValidByIds(Collection ids, Boolean isValid) {
- if(isValid){
- //TODO 做一些业务上的校验,判断是否需要校验
- }
- return baseMapper.deleteBatchIds(ids);
- }
-
- /**
- * 校验分类编码是否唯一
- *
- * @param category 流程分类
- * @return 结果
- */
- @Override
- public boolean checkCategoryCodeUnique(WfCategory category) {
- boolean exist = baseMapper.exists(new LambdaQueryWrapper()
- .eq(WfCategory::getCode, category.getCode())
- .ne(ObjectUtil.isNotNull(category.getCategoryId()), WfCategory::getCategoryId, category.getCategoryId()));
- return !exist;
- }
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/service/impl/WfCopyServiceImpl.java b/klp-system/src/main/java/com/klp/workflow/service/impl/WfCopyServiceImpl.java
deleted file mode 100644
index 1be0732e..00000000
--- a/klp-system/src/main/java/com/klp/workflow/service/impl/WfCopyServiceImpl.java
+++ /dev/null
@@ -1,114 +0,0 @@
-package com.klp.workflow.service.impl;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.klp.common.core.domain.PageQuery;
-import com.klp.common.core.page.TableDataInfo;
-import com.klp.common.helper.LoginHelper;
-import com.klp.common.utils.StringUtils;
-import com.klp.workflow.domain.WfCopy;
-import com.klp.workflow.domain.bo.WfCopyBo;
-import com.klp.workflow.domain.bo.WfTaskBo;
-import com.klp.workflow.domain.vo.WfCopyVo;
-import com.klp.workflow.mapper.WfCopyMapper;
-import com.klp.workflow.service.IWfCopyService;
-import lombok.RequiredArgsConstructor;
-import org.flowable.engine.HistoryService;
-import org.flowable.engine.history.HistoricProcessInstance;
-import org.springframework.stereotype.Service;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 流程抄送Service业务层处理
- *
- * @author KonBAI
- * @date 2022-05-19
- */
-@RequiredArgsConstructor
-@Service
-public class WfCopyServiceImpl implements IWfCopyService {
-
- private final WfCopyMapper baseMapper;
-
- private final HistoryService historyService;
-
- /**
- * 查询流程抄送
- *
- * @param copyId 流程抄送主键
- * @return 流程抄送
- */
- @Override
- public WfCopyVo queryById(Long copyId){
- return baseMapper.selectVoById(copyId);
- }
-
- /**
- * 查询流程抄送列表
- *
- * @param bo 流程抄送
- * @return 流程抄送
- */
- @Override
- public TableDataInfo selectPageList(WfCopyBo bo, PageQuery pageQuery) {
- LambdaQueryWrapper lqw = buildQueryWrapper(bo);
- lqw.orderByDesc(WfCopy::getCreateTime);
- Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
- return TableDataInfo.build(result);
- }
-
- /**
- * 查询流程抄送列表
- *
- * @param bo 流程抄送
- * @return 流程抄送
- */
- @Override
- public List selectList(WfCopyBo bo) {
- LambdaQueryWrapper lqw = buildQueryWrapper(bo);
- return baseMapper.selectVoList(lqw);
- }
-
- private LambdaQueryWrapper buildQueryWrapper(WfCopyBo bo) {
- Map params = bo.getParams();
- LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
- lqw.eq(bo.getUserId() != null, WfCopy::getUserId, bo.getUserId());
- lqw.like(StringUtils.isNotBlank(bo.getProcessName()), WfCopy::getProcessName, bo.getProcessName());
- lqw.like(StringUtils.isNotBlank(bo.getOriginatorName()), WfCopy::getOriginatorName, bo.getOriginatorName());
- return lqw;
- }
-
- @Override
- public Boolean makeCopy(WfTaskBo taskBo) {
- if (StringUtils.isBlank(taskBo.getCopyUserIds())) {
- // 若抄送用户为空,则不需要处理,返回成功
- return true;
- }
- HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery()
- .processInstanceId(taskBo.getProcInsId()).singleResult();
- String[] ids = taskBo.getCopyUserIds().split(",");
- List copyList = new ArrayList<>(ids.length);
- Long originatorId = LoginHelper.getUserId();
- String originatorName = LoginHelper.getNickName();
- String title = historicProcessInstance.getProcessDefinitionName() + "-" + taskBo.getTaskName();
- for (String id : ids) {
- Long userId = Long.valueOf(id);
- WfCopy copy = new WfCopy();
- copy.setTitle(title);
- copy.setProcessId(historicProcessInstance.getProcessDefinitionId());
- copy.setProcessName(historicProcessInstance.getProcessDefinitionName());
- copy.setDeploymentId(historicProcessInstance.getDeploymentId());
- copy.setInstanceId(taskBo.getProcInsId());
- copy.setTaskId(taskBo.getTaskId());
- copy.setUserId(userId);
- copy.setOriginatorId(originatorId);
- copy.setOriginatorName(originatorName);
- copyList.add(copy);
- }
- return baseMapper.insertBatch(copyList);
- }
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/service/impl/WfDeployFormServiceImpl.java b/klp-system/src/main/java/com/klp/workflow/service/impl/WfDeployFormServiceImpl.java
deleted file mode 100644
index 002c20d1..00000000
--- a/klp-system/src/main/java/com/klp/workflow/service/impl/WfDeployFormServiceImpl.java
+++ /dev/null
@@ -1,134 +0,0 @@
-package com.klp.workflow.service.impl;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.convert.Convert;
-import cn.hutool.core.util.ObjectUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.klp.common.exception.ServiceException;
-import com.klp.common.utils.StringUtils;
-import com.klp.flowable.utils.ModelUtils;
-import com.klp.workflow.domain.WfDeployForm;
-import com.klp.workflow.domain.WfForm;
-import com.klp.workflow.domain.vo.WfFormVo;
-import com.klp.workflow.mapper.WfDeployFormMapper;
-import com.klp.workflow.mapper.WfFormMapper;
-import com.klp.workflow.service.IWfDeployFormService;
-import lombok.RequiredArgsConstructor;
-import org.flowable.bpmn.model.BpmnModel;
-import org.flowable.bpmn.model.FlowNode;
-import org.flowable.bpmn.model.StartEvent;
-import org.flowable.bpmn.model.UserTask;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-/**
- * 流程实例关联表单Service业务层处理
- *
- * @author KonBAI
- * @createTime 2022/3/7 22:07
- */
-@RequiredArgsConstructor
-@Service
-public class WfDeployFormServiceImpl implements IWfDeployFormService {
-
- private final WfDeployFormMapper baseMapper;
-
- private final WfFormMapper formMapper;
-
- /**
- * 新增流程实例关联表单
- *
- * @param deployForm 流程实例关联表单
- * @return 结果
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public int insertWfDeployForm(WfDeployForm deployForm) {
- // 删除部署流程和表单的关联关系
- baseMapper.delete(new LambdaQueryWrapper().eq(WfDeployForm::getDeployId, deployForm.getDeployId()));
- // 新增部署流程和表单关系
- return baseMapper.insert(deployForm);
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public boolean saveInternalDeployForm(String deployId, BpmnModel bpmnModel) {
- List deployFormList = new ArrayList<>();
- // 获取开始节点
- StartEvent startEvent = ModelUtils.getStartEvent(bpmnModel);
- if (ObjectUtil.isNull(startEvent)) {
- throw new RuntimeException("开始节点不存在,请检查流程设计是否有误!");
- }
- // 保存开始节点表单信息
- WfDeployForm startDeployForm = buildDeployForm(deployId, startEvent);
- if (ObjectUtil.isNotNull(startDeployForm)) {
- deployFormList.add(startDeployForm);
- }
- // 保存用户节点表单信息
- Collection userTasks = ModelUtils.getAllUserTaskEvent(bpmnModel);
- if (CollUtil.isNotEmpty(userTasks)) {
- for (UserTask userTask : userTasks) {
- WfDeployForm userTaskDeployForm = buildDeployForm(deployId, userTask);
- if (ObjectUtil.isNotNull(userTaskDeployForm)) {
- deployFormList.add(userTaskDeployForm);
- }
- }
- }
- // 批量新增部署流程和表单关联信息
- return baseMapper.insertBatch(deployFormList);
- }
-
- /**
- * 查询流程挂着的表单
- *
- * @param deployId
- * @return
- */
- @Override
- public WfFormVo selectDeployFormByDeployId(String deployId) {
- QueryWrapper wrapper = Wrappers.query();
- wrapper.eq("t2.deploy_id", deployId);
- List list = formMapper.selectFormVoList(wrapper);
- if (ObjectUtil.isNotEmpty(list)) {
- if (list.size() != 1) {
- throw new ServiceException("表单信息查询错误");
- } else {
- return list.get(0);
- }
- } else {
- return null;
- }
- }
-
- /**
- * 构建部署表单关联信息对象
- * @param deployId 部署ID
- * @param node 节点信息
- * @return 部署表单关联对象。若无表单信息(formKey),则返回null
- */
- private WfDeployForm buildDeployForm(String deployId, FlowNode node) {
- String formKey = ModelUtils.getFormKey(node);
- if (StringUtils.isEmpty(formKey)) {
- return null;
- }
- Long formId = Convert.toLong(StringUtils.substringAfter(formKey, "key_"));
- WfForm wfForm = formMapper.selectById(formId);
- if (ObjectUtil.isNull(wfForm)) {
- throw new ServiceException("表单信息查询错误");
- }
- WfDeployForm deployForm = new WfDeployForm();
- deployForm.setDeployId(deployId);
- deployForm.setFormKey(formKey);
- deployForm.setNodeKey(node.getId());
- deployForm.setFormName(wfForm.getFormName());
- deployForm.setNodeName(node.getName());
- deployForm.setContent(wfForm.getContent());
- return deployForm;
- }
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/service/impl/WfDeployServiceImpl.java b/klp-system/src/main/java/com/klp/workflow/service/impl/WfDeployServiceImpl.java
deleted file mode 100644
index 4908ca7e..00000000
--- a/klp-system/src/main/java/com/klp/workflow/service/impl/WfDeployServiceImpl.java
+++ /dev/null
@@ -1,146 +0,0 @@
-package com.klp.workflow.service.impl;
-
-import cn.hutool.core.io.IORuntimeException;
-import cn.hutool.core.io.IoUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.klp.common.core.domain.PageQuery;
-import com.klp.common.core.page.TableDataInfo;
-import com.klp.flowable.core.domain.ProcessQuery;
-import com.klp.flowable.utils.ProcessUtils;
-import com.klp.workflow.domain.WfDeployForm;
-import com.klp.workflow.domain.vo.WfDeployVo;
-import com.klp.workflow.mapper.WfDeployFormMapper;
-import com.klp.workflow.service.IWfDeployService;
-import lombok.RequiredArgsConstructor;
-import org.flowable.common.engine.impl.db.SuspensionState;
-import org.flowable.engine.RepositoryService;
-import org.flowable.engine.repository.Deployment;
-import org.flowable.engine.repository.ProcessDefinition;
-import org.flowable.engine.repository.ProcessDefinitionQuery;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * @author KonBAI
- * @createTime 2022/6/30 9:04
- */
-@RequiredArgsConstructor
-@Service
-public class WfDeployServiceImpl implements IWfDeployService {
-
- private final RepositoryService repositoryService;
- private final WfDeployFormMapper deployFormMapper;
-
- @Override
- public TableDataInfo queryPageList(ProcessQuery processQuery, PageQuery pageQuery) {
- // 流程定义列表数据查询
- ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery()
- .latestVersion()
- .orderByProcessDefinitionKey()
- .asc();
- // 构建搜索条件
- ProcessUtils.buildProcessSearch(processDefinitionQuery, processQuery);
- long pageTotal = processDefinitionQuery.count();
- if (pageTotal <= 0) {
- return TableDataInfo.build();
- }
- int offset = pageQuery.getPageSize() * (pageQuery.getPageNum() - 1);
- List definitionList = processDefinitionQuery.listPage(offset, pageQuery.getPageSize());
-
- List deployVoList = new ArrayList<>(definitionList.size());
- for (ProcessDefinition processDefinition : definitionList) {
- String deploymentId = processDefinition.getDeploymentId();
- Deployment deployment = repositoryService.createDeploymentQuery().deploymentId(deploymentId).singleResult();
- WfDeployVo vo = new WfDeployVo();
- vo.setDefinitionId(processDefinition.getId());
- vo.setProcessKey(processDefinition.getKey());
- vo.setProcessName(processDefinition.getName());
- vo.setVersion(processDefinition.getVersion());
- vo.setCategory(processDefinition.getCategory());
- vo.setDeploymentId(processDefinition.getDeploymentId());
- vo.setSuspended(processDefinition.isSuspended());
- // 流程部署信息
- vo.setCategory(deployment.getCategory());
- vo.setDeploymentTime(deployment.getDeploymentTime());
- deployVoList.add(vo);
- }
- Page page = new Page<>();
- page.setRecords(deployVoList);
- page.setTotal(pageTotal);
- return TableDataInfo.build(page);
- }
-
- @Override
- public TableDataInfo queryPublishList(String processKey, PageQuery pageQuery) {
- // 创建查询条件
- ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery()
- .processDefinitionKey(processKey)
- .orderByProcessDefinitionVersion()
- .desc();
- long pageTotal = processDefinitionQuery.count();
- if (pageTotal <= 0) {
- return TableDataInfo.build();
- }
- // 根据查询条件,查询所有版本
- int offset = pageQuery.getPageSize() * (pageQuery.getPageNum() - 1);
- List processDefinitionList = processDefinitionQuery
- .listPage(offset, pageQuery.getPageSize());
- List deployVoList = processDefinitionList.stream().map(item -> {
- WfDeployVo vo = new WfDeployVo();
- vo.setDefinitionId(item.getId());
- vo.setProcessKey(item.getKey());
- vo.setProcessName(item.getName());
- vo.setVersion(item.getVersion());
- vo.setCategory(item.getCategory());
- vo.setDeploymentId(item.getDeploymentId());
- vo.setSuspended(item.isSuspended());
- return vo;
- }).collect(Collectors.toList());
- Page page = new Page<>();
- page.setRecords(deployVoList);
- page.setTotal(pageTotal);
- return TableDataInfo.build(page);
- }
-
- /**
- * 激活或挂起流程
- *
- * @param state 状态
- * @param definitionId 流程定义ID
- */
- @Override
- public void updateState(String definitionId, String state) {
- if (SuspensionState.ACTIVE.toString().equals(state)) {
- // 激活
- repositoryService.activateProcessDefinitionById(definitionId, true, null);
- } else if (SuspensionState.SUSPENDED.toString().equals(state)) {
- // 挂起
- repositoryService.suspendProcessDefinitionById(definitionId, true, null);
- }
- }
-
- @Override
- public String queryBpmnXmlById(String definitionId) {
- InputStream inputStream = repositoryService.getProcessModel(definitionId);
- try {
- return IoUtil.readUtf8(inputStream);
- } catch (IORuntimeException exception) {
- throw new RuntimeException("加载xml文件异常");
- }
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void deleteByIds(List deployIds) {
- for (String deployId : deployIds) {
- repositoryService.deleteDeployment(deployId, true);
- deployFormMapper.delete(new LambdaQueryWrapper().eq(WfDeployForm::getDeployId, deployId));
- }
- }
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/service/impl/WfFormServiceImpl.java b/klp-system/src/main/java/com/klp/workflow/service/impl/WfFormServiceImpl.java
deleted file mode 100644
index 6e43c5ca..00000000
--- a/klp-system/src/main/java/com/klp/workflow/service/impl/WfFormServiceImpl.java
+++ /dev/null
@@ -1,118 +0,0 @@
-package com.klp.workflow.service.impl;
-
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.klp.common.core.domain.PageQuery;
-import com.klp.common.core.page.TableDataInfo;
-import com.klp.common.utils.StringUtils;
-import com.klp.workflow.domain.WfForm;
-import com.klp.workflow.domain.bo.WfFormBo;
-import com.klp.workflow.domain.vo.WfFormVo;
-import com.klp.workflow.mapper.WfFormMapper;
-import com.klp.workflow.service.IWfFormService;
-import lombok.RequiredArgsConstructor;
-import org.springframework.stereotype.Service;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * 流程表单Service业务层处理
- *
- * @author KonBAI
- * @createTime 2022/3/7 22:07
- */
-@RequiredArgsConstructor
-@Service
-public class WfFormServiceImpl implements IWfFormService {
-
- private final WfFormMapper baseMapper;
-
- /**
- * 查询流程表单
- *
- * @param formId 流程表单ID
- * @return 流程表单
- */
- @Override
- public WfFormVo queryById(Long formId) {
- return baseMapper.selectVoById(formId);
- }
-
- /**
- * 查询流程表单列表
- *
- * @param bo 流程表单
- * @return 流程表单
- */
- @Override
- public TableDataInfo queryPageList(WfFormBo bo, PageQuery pageQuery) {
- LambdaQueryWrapper lqw = buildQueryWrapper(bo);
- Page result = baseMapper.selectVoPage(pageQuery.build(), lqw);
- return TableDataInfo.build(result);
- }
-
- /**
- * 查询流程表单列表
- *
- * @param bo 流程表单
- * @return 流程表单
- */
- @Override
- public List queryList(WfFormBo bo) {
- LambdaQueryWrapper lqw = buildQueryWrapper(bo);
- return baseMapper.selectVoList(lqw);
- }
-
- /**
- * 新增流程表单
- *
- * @param bo 流程表单
- * @return 结果
- */
- @Override
- public int insertForm(WfFormBo bo) {
- WfForm wfForm = new WfForm();
- wfForm.setFormName(bo.getFormName());
- wfForm.setContent(bo.getContent());
- wfForm.setRemark(bo.getRemark());
- return baseMapper.insert(wfForm);
- }
-
- /**
- * 修改流程表单
- *
- * @param bo 流程表单
- * @return 结果
- */
- @Override
- public int updateForm(WfFormBo bo) {
- return baseMapper.update(new WfForm(), new LambdaUpdateWrapper()
- .set(StrUtil.isNotBlank(bo.getFormName()), WfForm::getFormName, bo.getFormName())
- .set(StrUtil.isNotBlank(bo.getContent()), WfForm::getContent, bo.getContent())
- .set(StrUtil.isNotBlank(bo.getRemark()), WfForm::getRemark, bo.getRemark())
- .eq(WfForm::getFormId, bo.getFormId()));
- }
-
- /**
- * 批量删除流程表单
- *
- * @param ids 需要删除的流程表单ID
- * @return 结果
- */
- @Override
- public Boolean deleteWithValidByIds(Collection ids) {
- return baseMapper.deleteBatchIds(ids) > 0;
- }
-
- private LambdaQueryWrapper buildQueryWrapper(WfFormBo bo) {
- Map params = bo.getParams();
- LambdaQueryWrapper lqw = Wrappers.lambdaQuery();
- lqw.like(StringUtils.isNotBlank(bo.getFormName()), WfForm::getFormName, bo.getFormName());
- return lqw;
- }
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/service/impl/WfInstanceServiceImpl.java b/klp-system/src/main/java/com/klp/workflow/service/impl/WfInstanceServiceImpl.java
deleted file mode 100644
index 3ad8fad2..00000000
--- a/klp-system/src/main/java/com/klp/workflow/service/impl/WfInstanceServiceImpl.java
+++ /dev/null
@@ -1,212 +0,0 @@
-package com.klp.workflow.service.impl;
-
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.date.BetweenFormatter;
-import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.util.ObjectUtil;
-import com.klp.common.core.domain.entity.SysDept;
-import com.klp.common.core.domain.entity.SysRole;
-import com.klp.common.core.service.UserService;
-import com.klp.common.exception.ServiceException;
-import com.klp.common.utils.JsonUtils;
-import com.klp.common.utils.StringUtils;
-import com.klp.flowable.common.constant.TaskConstants;
-import com.klp.flowable.factory.FlowServiceFactory;
-import com.klp.system.service.ISysDeptService;
-import com.klp.system.service.ISysRoleService;
-import com.klp.workflow.domain.bo.WfTaskBo;
-import com.klp.workflow.domain.vo.WfFormVo;
-import com.klp.workflow.domain.vo.WfTaskVo;
-import com.klp.workflow.service.IWfDeployFormService;
-import com.klp.workflow.service.IWfInstanceService;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.flowable.common.engine.api.FlowableObjectNotFoundException;
-import org.flowable.engine.history.HistoricProcessInstance;
-import org.flowable.engine.task.Comment;
-import org.flowable.identitylink.api.history.HistoricIdentityLink;
-import org.flowable.task.api.history.HistoricTaskInstance;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.util.*;
-
-/**
- * 工作流流程实例管理
- *
- * @author KonBAI
- * @createTime 2022/3/10 00:12
- */
-@RequiredArgsConstructor
-@Service
-@Slf4j
-public class WfInstanceServiceImpl extends FlowServiceFactory implements IWfInstanceService {
-
- private final IWfDeployFormService deployFormService;
- private final UserService userService;
- private final ISysRoleService roleService;
- private final ISysDeptService deptService;
-
- /**
- * 结束流程实例
- *
- * @param vo
- */
- @Override
- public void stopProcessInstance(WfTaskBo vo) {
- String taskId = vo.getTaskId();
-
- }
-
- /**
- * 激活或挂起流程实例
- *
- * @param state 状态
- * @param instanceId 流程实例ID
- */
- @Override
- public void updateState(Integer state, String instanceId) {
-
- // 激活
- if (state == 1) {
- runtimeService.activateProcessInstanceById(instanceId);
- }
- // 挂起
- if (state == 2) {
- runtimeService.suspendProcessInstanceById(instanceId);
- }
- }
-
- /**
- * 删除流程实例ID
- *
- * @param instanceId 流程实例ID
- * @param deleteReason 删除原因
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void delete(String instanceId, String deleteReason) {
-
- // 查询历史数据
- HistoricProcessInstance historicProcessInstance = getHistoricProcessInstanceById(instanceId);
- if (historicProcessInstance.getEndTime() != null) {
- historyService.deleteHistoricProcessInstance(historicProcessInstance.getId());
- return;
- }
- // 删除流程实例
- runtimeService.deleteProcessInstance(instanceId, deleteReason);
- // 删除历史流程实例
- historyService.deleteHistoricProcessInstance(instanceId);
- }
-
- /**
- * 根据实例ID查询历史实例数据
- *
- * @param processInstanceId
- * @return
- */
- @Override
- public HistoricProcessInstance getHistoricProcessInstanceById(String processInstanceId) {
- HistoricProcessInstance historicProcessInstance =
- historyService.createHistoricProcessInstanceQuery().processInstanceId(processInstanceId).singleResult();
- if (Objects.isNull(historicProcessInstance)) {
- throw new FlowableObjectNotFoundException("流程实例不存在: " + processInstanceId);
- }
- return historicProcessInstance;
- }
-
-
- /**
- * 流程历史流转记录
- *
- * @param procInsId 流程实例Id
- * @return
- */
- @Override
- public Map queryDetailProcess(String procInsId, String deployId) {
- Map map = new HashMap<>();
- if (StringUtils.isNotBlank(procInsId)) {
- List taskInstanceList = historyService.createHistoricTaskInstanceQuery()
- .processInstanceId(procInsId)
- .orderByHistoricTaskInstanceStartTime().desc()
- .list();
- List commentList = taskService.getProcessInstanceComments(procInsId);
- List taskVoList = new ArrayList<>(taskInstanceList.size());
- taskInstanceList.forEach(taskInstance -> {
- WfTaskVo taskVo = new WfTaskVo();
- taskVo.setProcDefId(taskInstance.getProcessDefinitionId());
- taskVo.setTaskId(taskInstance.getId());
- taskVo.setTaskDefKey(taskInstance.getTaskDefinitionKey());
- taskVo.setTaskName(taskInstance.getName());
- taskVo.setCreateTime(taskInstance.getStartTime());
- taskVo.setFinishTime(taskInstance.getEndTime());
- if (StringUtils.isNotBlank(taskInstance.getAssignee())) {
- Long userId = Long.parseLong(taskInstance.getAssignee());
- String nickName = userService.selectNickNameById(userId);
- taskVo.setAssigneeId(userId);
- taskVo.setAssigneeName(nickName);
- }
- // 展示审批人员
- List linksForTask = historyService.getHistoricIdentityLinksForTask(taskInstance.getId());
- StringBuilder stringBuilder = new StringBuilder();
- for (HistoricIdentityLink identityLink : linksForTask) {
- if ("candidate".equals(identityLink.getType())) {
- if (StringUtils.isNotBlank(identityLink.getUserId())) {
- Long userId = Long.parseLong(identityLink.getUserId());
- String nickName = userService.selectNickNameById(userId);
- stringBuilder.append(nickName).append(",");
- }
- if (StringUtils.isNotBlank(identityLink.getGroupId())) {
- if (identityLink.getGroupId().startsWith(TaskConstants.ROLE_GROUP_PREFIX)) {
- Long roleId = Long.parseLong(StringUtils.stripStart(identityLink.getGroupId(), TaskConstants.ROLE_GROUP_PREFIX));
- SysRole role = roleService.selectRoleById(roleId);
- stringBuilder.append(role.getRoleName()).append(",");
- } else if (identityLink.getGroupId().startsWith(TaskConstants.DEPT_GROUP_PREFIX)) {
- Long deptId = Long.parseLong(StringUtils.stripStart(identityLink.getGroupId(), TaskConstants.DEPT_GROUP_PREFIX));
- SysDept dept = deptService.selectDeptById(deptId);
- stringBuilder.append(dept.getDeptName()).append(",");
- }
- }
- }
- }
- if (StringUtils.isNotBlank(stringBuilder)) {
- taskVo.setCandidate(stringBuilder.substring(0, stringBuilder.length() - 1));
- }
- if (ObjectUtil.isNotNull(taskInstance.getDurationInMillis())) {
- taskVo.setDuration(DateUtil.formatBetween(taskInstance.getDurationInMillis(), BetweenFormatter.Level.SECOND));
- }
- // 获取意见评论内容
- if (CollUtil.isNotEmpty(commentList)) {
- List comments = new ArrayList<>();
- // commentList.stream().filter(comment -> taskInstance.getId().equals(comment.getTaskId())).collect(Collectors.toList());
- for (Comment comment : commentList) {
- if (comment.getTaskId().equals(taskInstance.getId())) {
- comments.add(comment);
- // taskVo.setComment(WfCommentDto.builder().type(comment.getType()).comment(comment.getFullMessage()).build());
- }
- }
- taskVo.setCommentList(comments);
- }
- taskVoList.add(taskVo);
- });
- map.put("flowList", taskVoList);
-// // 查询当前任务是否完成
-// List taskList = taskService.createTaskQuery().processInstanceId(procInsId).list();
-// if (CollectionUtils.isNotEmpty(taskList)) {
-// map.put("finished", true);
-// } else {
-// map.put("finished", false);
-// }
- }
- // 第一次申请获取初始化表单
- if (StringUtils.isNotBlank(deployId)) {
- WfFormVo formVo = deployFormService.selectDeployFormByDeployId(deployId);
- if (Objects.isNull(formVo)) {
- throw new ServiceException("请先配置流程表单");
- }
- map.put("formData", JsonUtils.parseObject(formVo.getContent(), Map.class));
- }
- return map;
- }
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/service/impl/WfModelServiceImpl.java b/klp-system/src/main/java/com/klp/workflow/service/impl/WfModelServiceImpl.java
deleted file mode 100644
index 26dd3418..00000000
--- a/klp-system/src/main/java/com/klp/workflow/service/impl/WfModelServiceImpl.java
+++ /dev/null
@@ -1,359 +0,0 @@
-package com.klp.workflow.service.impl;
-
-import cn.hutool.core.util.ArrayUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.klp.common.core.domain.PageQuery;
-import com.klp.common.core.page.TableDataInfo;
-import com.klp.common.helper.LoginHelper;
-import com.klp.common.utils.JsonUtils;
-import com.klp.common.utils.StringUtils;
-import com.klp.flowable.common.constant.ProcessConstants;
-import com.klp.flowable.common.enums.FormType;
-import com.klp.flowable.factory.FlowServiceFactory;
-import com.klp.flowable.utils.ModelUtils;
-import com.klp.workflow.domain.bo.WfModelBo;
-import com.klp.workflow.domain.dto.WfMetaInfoDto;
-import com.klp.workflow.domain.vo.WfFormVo;
-import com.klp.workflow.domain.vo.WfModelVo;
-import com.klp.workflow.service.IWfDeployFormService;
-import com.klp.workflow.service.IWfFormService;
-import com.klp.workflow.service.IWfModelService;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.flowable.bpmn.model.BpmnModel;
-import org.flowable.bpmn.model.StartEvent;
-import org.flowable.engine.repository.Deployment;
-import org.flowable.engine.repository.Model;
-import org.flowable.engine.repository.ModelQuery;
-import org.flowable.engine.repository.ProcessDefinition;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.nio.charset.StandardCharsets;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-/**
- * @author KonBAI
- * @createTime 2022/6/21 9:11
- */
-@RequiredArgsConstructor
-@Service
-@Slf4j
-public class WfModelServiceImpl extends FlowServiceFactory implements IWfModelService {
-
- private final IWfFormService formService;
- private final IWfDeployFormService deployFormService;
-
- @Override
- public TableDataInfo list(WfModelBo modelBo, PageQuery pageQuery) {
- ModelQuery modelQuery = repositoryService.createModelQuery().latestVersion().orderByCreateTime().desc();
- // 构建查询条件
- if (StringUtils.isNotBlank(modelBo.getModelKey())) {
- modelQuery.modelKey(modelBo.getModelKey());
- }
- if (StringUtils.isNotBlank(modelBo.getModelName())) {
- modelQuery.modelNameLike("%" + modelBo.getModelName() + "%");
- }
- if (StringUtils.isNotBlank(modelBo.getCategory())) {
- modelQuery.modelCategory(modelBo.getCategory());
- }
- // 执行查询
- long pageTotal = modelQuery.count();
- if (pageTotal <= 0) {
- return TableDataInfo.build();
- }
- int offset = pageQuery.getPageSize() * (pageQuery.getPageNum() - 1);
- List modelList = modelQuery.listPage(offset, pageQuery.getPageSize());
- List modelVoList = new ArrayList<>(modelList.size());
- modelList.forEach(model -> {
- WfModelVo modelVo = new WfModelVo();
- modelVo.setModelId(model.getId());
- modelVo.setModelName(model.getName());
- modelVo.setModelKey(model.getKey());
- modelVo.setCategory(model.getCategory());
- modelVo.setCreateTime(model.getCreateTime());
- modelVo.setVersion(model.getVersion());
- WfMetaInfoDto metaInfo = JsonUtils.parseObject(model.getMetaInfo(), WfMetaInfoDto.class);
- if (metaInfo != null) {
- modelVo.setDescription(metaInfo.getDescription());
- modelVo.setFormType(metaInfo.getFormType());
- modelVo.setFormId(metaInfo.getFormId());
- }
- modelVoList.add(modelVo);
- });
- Page page = new Page<>();
- page.setRecords(modelVoList);
- page.setTotal(pageTotal);
- return TableDataInfo.build(page);
- }
-
- @Override
- public List list(WfModelBo modelBo) {
- ModelQuery modelQuery = repositoryService.createModelQuery().latestVersion().orderByCreateTime().desc();
- // 构建查询条件
- if (StringUtils.isNotBlank(modelBo.getModelKey())) {
- modelQuery.modelKey(modelBo.getModelKey());
- }
- if (StringUtils.isNotBlank(modelBo.getModelName())) {
- modelQuery.modelNameLike("%" + modelBo.getModelName() + "%");
- }
- if (StringUtils.isNotBlank(modelBo.getCategory())) {
- modelQuery.modelCategory(modelBo.getCategory());
- }
- List modelList = modelQuery.list();
- List modelVoList = new ArrayList<>(modelList.size());
- modelList.forEach(model -> {
- WfModelVo modelVo = new WfModelVo();
- modelVo.setModelId(model.getId());
- modelVo.setModelName(model.getName());
- modelVo.setModelKey(model.getKey());
- modelVo.setCategory(model.getCategory());
- modelVo.setCreateTime(model.getCreateTime());
- modelVo.setVersion(model.getVersion());
- WfMetaInfoDto metaInfo = JsonUtils.parseObject(model.getMetaInfo(), WfMetaInfoDto.class);
- if (metaInfo != null) {
- modelVo.setDescription(metaInfo.getDescription());
- modelVo.setFormType(metaInfo.getFormType());
- modelVo.setFormId(metaInfo.getFormId());
- }
- modelVoList.add(modelVo);
- });
- return modelVoList;
- }
-
- @Override
- public TableDataInfo historyList(WfModelBo modelBo, PageQuery pageQuery) {
- ModelQuery modelQuery = repositoryService.createModelQuery()
- .modelKey(modelBo.getModelKey())
- .orderByModelVersion()
- .desc();
- // 执行查询(不显示最新版,-1)
- long pageTotal = modelQuery.count() - 1;
- if (pageTotal <= 0) {
- return TableDataInfo.build();
- }
- // offset+1,去掉最新版
- int offset = 1 + pageQuery.getPageSize() * (pageQuery.getPageNum() - 1);
- List modelList = modelQuery.listPage(offset, pageQuery.getPageSize());
- List modelVoList = new ArrayList<>(modelList.size());
- modelList.forEach(model -> {
- WfModelVo modelVo = new WfModelVo();
- modelVo.setModelId(model.getId());
- modelVo.setModelName(model.getName());
- modelVo.setModelKey(model.getKey());
- modelVo.setCategory(model.getCategory());
- modelVo.setCreateTime(model.getCreateTime());
- modelVo.setVersion(model.getVersion());
- WfMetaInfoDto metaInfo = JsonUtils.parseObject(model.getMetaInfo(), WfMetaInfoDto.class);
- if (metaInfo != null) {
- modelVo.setDescription(metaInfo.getDescription());
- modelVo.setFormType(metaInfo.getFormType());
- modelVo.setFormId(metaInfo.getFormId());
- }
- modelVoList.add(modelVo);
- });
- Page page = new Page<>();
- page.setRecords(modelVoList);
- page.setTotal(pageTotal);
- return TableDataInfo.build(page);
- }
-
- @Override
- public WfModelVo getModel(String modelId) {
- // 获取流程模型
- Model model = repositoryService.getModel(modelId);
- if (ObjectUtil.isNull(model)) {
- throw new RuntimeException("流程模型不存在!");
- }
- // 获取流程图
- String bpmnXml = queryBpmnXmlById(modelId);
- WfModelVo modelVo = new WfModelVo();
- modelVo.setModelId(model.getId());
- modelVo.setModelName(model.getName());
- modelVo.setModelKey(model.getKey());
- modelVo.setCategory(model.getCategory());
- modelVo.setCreateTime(model.getCreateTime());
- modelVo.setVersion(model.getVersion());
- modelVo.setBpmnXml(bpmnXml);
- WfMetaInfoDto metaInfo = JsonUtils.parseObject(model.getMetaInfo(), WfMetaInfoDto.class);
- if (metaInfo != null) {
- modelVo.setDescription(metaInfo.getDescription());
- modelVo.setFormType(metaInfo.getFormType());
- modelVo.setFormId(metaInfo.getFormId());
- if (FormType.PROCESS.getType().equals(metaInfo.getFormType())) {
- WfFormVo wfFormVo = formService.queryById(metaInfo.getFormId());
- modelVo.setContent(wfFormVo.getContent());
- }
- }
- return modelVo;
- }
-
- @Override
- public String queryBpmnXmlById(String modelId) {
- byte[] bpmnBytes = repositoryService.getModelEditorSource(modelId);
- return StrUtil.utf8Str(bpmnBytes);
- }
-
- @Override
- public void insertModel(WfModelBo modelBo) {
- Model model = repositoryService.newModel();
- model.setName(modelBo.getModelName());
- model.setKey(modelBo.getModelKey());
- model.setCategory(modelBo.getCategory());
- String metaInfo = buildMetaInfo(new WfMetaInfoDto(), modelBo.getDescription());
- model.setMetaInfo(metaInfo);
- // 保存流程模型
- repositoryService.saveModel(model);
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void updateModel(WfModelBo modelBo) {
- // 根据模型Key查询模型信息
- Model model = repositoryService.getModel(modelBo.getModelId());
- if (ObjectUtil.isNull(model)) {
- throw new RuntimeException("流程模型不存在!");
- }
- model.setCategory(modelBo.getCategory());
- WfMetaInfoDto metaInfoDto = JsonUtils.parseObject(model.getMetaInfo(), WfMetaInfoDto.class);
- String metaInfo = buildMetaInfo(metaInfoDto, modelBo.getDescription());
- model.setMetaInfo(metaInfo);
- // 保存流程模型
- repositoryService.saveModel(model);
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void saveModel(WfModelBo modelBo) {
- // 查询模型信息
- Model model = repositoryService.getModel(modelBo.getModelId());
- if (ObjectUtil.isNull(model)) {
- throw new RuntimeException("流程模型不存在!");
- }
- BpmnModel bpmnModel = ModelUtils.getBpmnModel(modelBo.getBpmnXml());
- if (ObjectUtil.isEmpty(bpmnModel)) {
- throw new RuntimeException("获取模型设计失败!");
- }
- String processName = bpmnModel.getMainProcess().getName();
- // 获取开始节点
- StartEvent startEvent = ModelUtils.getStartEvent(bpmnModel);
- if (ObjectUtil.isNull(startEvent)) {
- throw new RuntimeException("开始节点不存在,请检查流程设计是否有误!");
- }
- // 获取开始节点配置的表单Key
- if (StrUtil.isBlank(startEvent.getFormKey())) {
- throw new RuntimeException("请配置流程表单");
- }
- Model newModel;
- if (Boolean.TRUE.equals(modelBo.getNewVersion())) {
- newModel = repositoryService.newModel();
- newModel.setName(processName);
- newModel.setKey(model.getKey());
- newModel.setCategory(model.getCategory());
- newModel.setMetaInfo(model.getMetaInfo());
- newModel.setVersion(model.getVersion() + 1);
- } else {
- newModel = model;
- // 设置流程名称
- newModel.setName(processName);
- }
- // 保存流程模型
- repositoryService.saveModel(newModel);
- // 保存 BPMN XML
- byte[] bpmnXmlBytes = StringUtils.getBytes(modelBo.getBpmnXml(), StandardCharsets.UTF_8);
- repositoryService.addModelEditorSource(newModel.getId(), bpmnXmlBytes);
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void latestModel(String modelId) {
- // 获取流程模型
- Model model = repositoryService.getModel(modelId);
- if (ObjectUtil.isNull(model)) {
- throw new RuntimeException("流程模型不存在!");
- }
- Integer latestVersion = repositoryService.createModelQuery()
- .modelKey(model.getKey())
- .latestVersion()
- .singleResult()
- .getVersion();
- if (model.getVersion().equals(latestVersion)) {
- throw new RuntimeException("当前版本已是最新版!");
- }
- // 获取 BPMN XML
- byte[] bpmnBytes = repositoryService.getModelEditorSource(modelId);
- Model newModel = repositoryService.newModel();
- newModel.setName(model.getName());
- newModel.setKey(model.getKey());
- newModel.setCategory(model.getCategory());
- newModel.setMetaInfo(model.getMetaInfo());
- newModel.setVersion(latestVersion + 1);
- // 保存流程模型
- repositoryService.saveModel(newModel);
- // 保存 BPMN XML
- repositoryService.addModelEditorSource(newModel.getId(), bpmnBytes);
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void deleteByIds(Collection ids) {
- ids.forEach(id -> {
- Model model = repositoryService.getModel(id);
- if (ObjectUtil.isNull(model)) {
- throw new RuntimeException("流程模型不存在!");
- }
- repositoryService.deleteModel(id);
- });
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public boolean deployModel(String modelId) {
- // 获取流程模型
- Model model = repositoryService.getModel(modelId);
- if (ObjectUtil.isNull(model)) {
- throw new RuntimeException("流程模型不存在!");
- }
- // 获取流程图
- byte[] bpmnBytes = repositoryService.getModelEditorSource(modelId);
- if (ArrayUtil.isEmpty(bpmnBytes)) {
- throw new RuntimeException("请先设计流程图!");
- }
- String bpmnXml = StringUtils.toEncodedString(bpmnBytes, StandardCharsets.UTF_8);
- BpmnModel bpmnModel = ModelUtils.getBpmnModel(bpmnXml);
- String processName = model.getName() + ProcessConstants.SUFFIX;
- // 部署流程
- Deployment deployment = repositoryService.createDeployment()
- .name(model.getName())
- .key(model.getKey())
- .category(model.getCategory())
- .addBytes(processName, bpmnBytes)
- .deploy();
- ProcessDefinition procDef = repositoryService.createProcessDefinitionQuery()
- .deploymentId(deployment.getId())
- .singleResult();
- // 修改流程定义的分类,便于搜索流程
- repositoryService.setProcessDefinitionCategory(procDef.getId(), model.getCategory());
- // 保存部署表单
- return deployFormService.saveInternalDeployForm(deployment.getId(), bpmnModel);
- }
-
- /**
- * 构建模型扩展信息
- * @return
- */
- private String buildMetaInfo(WfMetaInfoDto metaInfo, String description) {
- // 只有非空,才进行设置,避免更新时的覆盖
- if (StringUtils.isNotEmpty(description)) {
- metaInfo.setDescription(description);
- }
- if (StringUtils.isNotEmpty(metaInfo.getCreateUser())) {
- metaInfo.setCreateUser(LoginHelper.getUsername());
- }
- return JsonUtils.toJsonString(metaInfo);
- }
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/service/impl/WfProcessServiceImpl.java b/klp-system/src/main/java/com/klp/workflow/service/impl/WfProcessServiceImpl.java
deleted file mode 100644
index e407e4d1..00000000
--- a/klp-system/src/main/java/com/klp/workflow/service/impl/WfProcessServiceImpl.java
+++ /dev/null
@@ -1,1050 +0,0 @@
-package com.klp.workflow.service.impl;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.convert.Convert;
-import cn.hutool.core.date.BetweenFormatter;
-import cn.hutool.core.date.DateUtil;
-import cn.hutool.core.io.IORuntimeException;
-import cn.hutool.core.io.IoUtil;
-import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.klp.common.core.domain.PageQuery;
-import com.klp.common.core.domain.entity.SysDept;
-import com.klp.common.core.domain.entity.SysRole;
-import com.klp.common.core.page.TableDataInfo;
-import com.klp.common.core.service.UserService;
-import com.klp.common.exception.ServiceException;
-import com.klp.common.utils.DateUtils;
-import com.klp.common.utils.JsonUtils;
-import com.klp.common.utils.StringUtils;
-import com.klp.flowable.common.constant.ProcessConstants;
-import com.klp.flowable.common.constant.TaskConstants;
-import com.klp.flowable.common.enums.ProcessStatus;
-import com.klp.flowable.core.FormConf;
-import com.klp.flowable.core.domain.ProcessQuery;
-import com.klp.flowable.factory.FlowServiceFactory;
-import com.klp.flowable.flow.FlowableUtils;
-import com.klp.flowable.utils.ModelUtils;
-import com.klp.flowable.utils.ProcessFormUtils;
-import com.klp.flowable.utils.ProcessUtils;
-import com.klp.flowable.utils.TaskUtils;
-import com.klp.system.service.ISysDeptService;
-import com.klp.system.service.ISysRoleService;
-import com.klp.workflow.domain.WfDeployForm;
-import com.klp.workflow.domain.vo.*;
-import com.klp.workflow.mapper.WfDeployFormMapper;
-import com.klp.workflow.service.IWfProcessService;
-import com.klp.workflow.service.IWfTaskService;
-import lombok.RequiredArgsConstructor;
-import org.flowable.bpmn.constants.BpmnXMLConstants;
-import org.flowable.bpmn.model.Process;
-import org.flowable.bpmn.model.*;
-import org.flowable.engine.history.HistoricActivityInstance;
-import org.flowable.engine.history.HistoricActivityInstanceQuery;
-import org.flowable.engine.history.HistoricProcessInstance;
-import org.flowable.engine.history.HistoricProcessInstanceQuery;
-import org.flowable.engine.repository.Deployment;
-import org.flowable.engine.repository.ProcessDefinition;
-import org.flowable.engine.repository.ProcessDefinitionQuery;
-import org.flowable.engine.runtime.ProcessInstance;
-import org.flowable.engine.task.Comment;
-import org.flowable.identitylink.api.history.HistoricIdentityLink;
-import org.flowable.task.api.Task;
-import org.flowable.task.api.TaskQuery;
-import org.flowable.task.api.history.HistoricTaskInstance;
-import org.flowable.task.api.history.HistoricTaskInstanceQuery;
-import org.flowable.variable.api.history.HistoricVariableInstance;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.io.InputStream;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * @author KonBAI
- * @createTime 2022/3/24 18:57
- */
-@RequiredArgsConstructor
-@Service
-public class WfProcessServiceImpl extends FlowServiceFactory implements IWfProcessService {
-
- private final IWfTaskService wfTaskService;
- private final UserService userService;
- private final ISysRoleService roleService;
- private final ISysDeptService deptService;
- private final WfDeployFormMapper deployFormMapper;
-
- /**
- * 流程定义列表
- *
- * @param pageQuery 分页参数
- * @return 流程定义分页列表数据
- */
- @Override
- public TableDataInfo selectPageStartProcessList(ProcessQuery processQuery, PageQuery pageQuery) {
- Page page = new Page<>();
- // 流程定义列表数据查询
- ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery()
- .latestVersion()
- .active()
- .orderByProcessDefinitionKey()
- .asc();
- // 构建搜索条件
- ProcessUtils.buildProcessSearch(processDefinitionQuery, processQuery);
- long pageTotal = processDefinitionQuery.count();
- if (pageTotal <= 0) {
- return TableDataInfo.build();
- }
- int offset = pageQuery.getPageSize() * (pageQuery.getPageNum() - 1);
- List definitionList = processDefinitionQuery.listPage(offset, pageQuery.getPageSize());
-
- List definitionVoList = new ArrayList<>();
- for (ProcessDefinition processDefinition : definitionList) {
- String deploymentId = processDefinition.getDeploymentId();
- Deployment deployment = repositoryService.createDeploymentQuery().deploymentId(deploymentId).singleResult();
- WfDefinitionVo vo = new WfDefinitionVo();
- vo.setDefinitionId(processDefinition.getId());
- vo.setProcessKey(processDefinition.getKey());
- vo.setProcessName(processDefinition.getName());
- vo.setVersion(processDefinition.getVersion());
- vo.setDeploymentId(processDefinition.getDeploymentId());
- vo.setSuspended(processDefinition.isSuspended());
- // 流程定义时间
- vo.setCategory(deployment.getCategory());
- vo.setDeploymentTime(deployment.getDeploymentTime());
- definitionVoList.add(vo);
- }
- page.setRecords(definitionVoList);
- page.setTotal(pageTotal);
- return TableDataInfo.build(page);
- }
-
- @Override
- public List selectStartProcessList(ProcessQuery processQuery) {
- // 流程定义列表数据查询
- ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery()
- .latestVersion()
- .active()
- .orderByProcessDefinitionKey()
- .asc();
- // 构建搜索条件
- ProcessUtils.buildProcessSearch(processDefinitionQuery, processQuery);
-
- List definitionList = processDefinitionQuery.list();
-
- List definitionVoList = new ArrayList<>();
- for (ProcessDefinition processDefinition : definitionList) {
- String deploymentId = processDefinition.getDeploymentId();
- Deployment deployment = repositoryService.createDeploymentQuery().deploymentId(deploymentId).singleResult();
- WfDefinitionVo vo = new WfDefinitionVo();
- vo.setDefinitionId(processDefinition.getId());
- vo.setProcessKey(processDefinition.getKey());
- vo.setProcessName(processDefinition.getName());
- vo.setVersion(processDefinition.getVersion());
- vo.setDeploymentId(processDefinition.getDeploymentId());
- vo.setSuspended(processDefinition.isSuspended());
- // 流程定义时间
- vo.setCategory(deployment.getCategory());
- vo.setDeploymentTime(deployment.getDeploymentTime());
- definitionVoList.add(vo);
- }
- return definitionVoList;
- }
-
- @Override
- public TableDataInfo selectPageOwnProcessList(ProcessQuery processQuery, PageQuery pageQuery) {
- Page page = new Page<>();
- HistoricProcessInstanceQuery historicProcessInstanceQuery = historyService.createHistoricProcessInstanceQuery()
- .startedBy(TaskUtils.getUserId())
- .orderByProcessInstanceStartTime()
- .desc();
- // 构建搜索条件
- ProcessUtils.buildProcessSearch(historicProcessInstanceQuery, processQuery);
- int offset = pageQuery.getPageSize() * (pageQuery.getPageNum() - 1);
- List historicProcessInstances = historicProcessInstanceQuery
- .listPage(offset, pageQuery.getPageSize());
- page.setTotal(historicProcessInstanceQuery.count());
- List taskVoList = new ArrayList<>();
- for (HistoricProcessInstance hisIns : historicProcessInstances) {
- WfTaskVo taskVo = new WfTaskVo();
- // 获取流程状态
- HistoricVariableInstance processStatusVariable = historyService.createHistoricVariableInstanceQuery()
- .processInstanceId(hisIns.getId())
- .variableName(ProcessConstants.PROCESS_STATUS_KEY)
- .singleResult();
- String processStatus = null;
- if (ObjectUtil.isNotNull(processStatusVariable)) {
- processStatus = Convert.toStr(processStatusVariable.getValue());
- }
- // 兼容旧流程
- if (processStatus == null) {
- processStatus = ObjectUtil.isNull(hisIns.getEndTime()) ? ProcessStatus.RUNNING.getStatus() : ProcessStatus.COMPLETED.getStatus();
- }
- taskVo.setProcessStatus(processStatus);
- taskVo.setCreateTime(hisIns.getStartTime());
- taskVo.setFinishTime(hisIns.getEndTime());
- taskVo.setProcInsId(hisIns.getId());
-
- // 计算耗时
- if (Objects.nonNull(hisIns.getEndTime())) {
- taskVo.setDuration(DateUtils.getDatePoor(hisIns.getEndTime(), hisIns.getStartTime()));
- } else {
- taskVo.setDuration(DateUtils.getDatePoor(DateUtils.getNowDate(), hisIns.getStartTime()));
- }
- // 流程部署实例信息
- Deployment deployment = repositoryService.createDeploymentQuery()
- .deploymentId(hisIns.getDeploymentId()).singleResult();
- taskVo.setDeployId(hisIns.getDeploymentId());
- taskVo.setProcDefId(hisIns.getProcessDefinitionId());
- taskVo.setProcDefName(hisIns.getProcessDefinitionName());
- taskVo.setProcDefVersion(hisIns.getProcessDefinitionVersion());
- taskVo.setCategory(deployment.getCategory());
- // 当前所处流程
- List taskList = taskService.createTaskQuery().processInstanceId(hisIns.getId()).includeIdentityLinks().list();
- if (CollUtil.isNotEmpty(taskList)) {
- taskVo.setTaskName(taskList.stream().map(Task::getName).filter(StringUtils::isNotEmpty).collect(Collectors.joining(",")));
- }
- taskVoList.add(taskVo);
- }
- page.setRecords(taskVoList);
- return TableDataInfo.build(page);
- }
-
- @Override
- public List selectOwnProcessList(ProcessQuery processQuery) {
- HistoricProcessInstanceQuery historicProcessInstanceQuery = historyService.createHistoricProcessInstanceQuery()
- .startedBy(TaskUtils.getUserId())
- .orderByProcessInstanceStartTime()
- .desc();
- // 构建搜索条件
- ProcessUtils.buildProcessSearch(historicProcessInstanceQuery, processQuery);
- List historicProcessInstances = historicProcessInstanceQuery.list();
- List taskVoList = new ArrayList<>();
- for (HistoricProcessInstance hisIns : historicProcessInstances) {
- WfTaskVo taskVo = new WfTaskVo();
- taskVo.setCreateTime(hisIns.getStartTime());
- taskVo.setFinishTime(hisIns.getEndTime());
- taskVo.setProcInsId(hisIns.getId());
-
- // 计算耗时
- if (Objects.nonNull(hisIns.getEndTime())) {
- taskVo.setDuration(DateUtils.getDatePoor(hisIns.getEndTime(), hisIns.getStartTime()));
- } else {
- taskVo.setDuration(DateUtils.getDatePoor(DateUtils.getNowDate(), hisIns.getStartTime()));
- }
- // 流程部署实例信息
- Deployment deployment = repositoryService.createDeploymentQuery()
- .deploymentId(hisIns.getDeploymentId()).singleResult();
- taskVo.setDeployId(hisIns.getDeploymentId());
- taskVo.setProcDefId(hisIns.getProcessDefinitionId());
- taskVo.setProcDefName(hisIns.getProcessDefinitionName());
- taskVo.setProcDefVersion(hisIns.getProcessDefinitionVersion());
- taskVo.setCategory(deployment.getCategory());
- // 当前所处流程
- List taskList = taskService.createTaskQuery().processInstanceId(hisIns.getId()).includeIdentityLinks().list();
- if (CollUtil.isNotEmpty(taskList)) {
- taskVo.setTaskName(taskList.stream().map(Task::getName).filter(StringUtils::isNotEmpty).collect(Collectors.joining(",")));
- }
- taskVoList.add(taskVo);
- }
- return taskVoList;
- }
-
- @Override
- public TableDataInfo selectPageTodoProcessList(ProcessQuery processQuery, PageQuery pageQuery) {
- Page page = new Page<>();
- TaskQuery taskQuery = taskService.createTaskQuery()
- .active()
- .includeProcessVariables()
- .taskCandidateOrAssigned(TaskUtils.getUserId())
- .taskCandidateGroupIn(TaskUtils.getCandidateGroup())
- .orderByTaskCreateTime().desc();
- // 构建搜索条件
- ProcessUtils.buildProcessSearch(taskQuery, processQuery);
- page.setTotal(taskQuery.count());
- int offset = pageQuery.getPageSize() * (pageQuery.getPageNum() - 1);
- List taskList = taskQuery.listPage(offset, pageQuery.getPageSize());
- List flowList = new ArrayList<>();
- for (Task task : taskList) {
- WfTaskVo flowTask = new WfTaskVo();
- // 当前流程信息
- flowTask.setTaskId(task.getId());
- flowTask.setTaskDefKey(task.getTaskDefinitionKey());
- flowTask.setCreateTime(task.getCreateTime());
- flowTask.setProcDefId(task.getProcessDefinitionId());
- flowTask.setTaskName(task.getName());
- // 流程定义信息
- ProcessDefinition pd = repositoryService.createProcessDefinitionQuery()
- .processDefinitionId(task.getProcessDefinitionId())
- .singleResult();
- flowTask.setDeployId(pd.getDeploymentId());
- flowTask.setProcDefName(pd.getName());
- flowTask.setProcDefVersion(pd.getVersion());
- flowTask.setProcInsId(task.getProcessInstanceId());
-
- // 流程发起人信息
- HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery()
- .processInstanceId(task.getProcessInstanceId())
- .singleResult();
- Long userId = Long.parseLong(historicProcessInstance.getStartUserId());
- String nickName = userService.selectNickNameById(userId);
- flowTask.setStartUserId(userId);
- flowTask.setStartUserName(nickName);
-
- // 流程变量
- flowTask.setProcVars(task.getProcessVariables());
-
- flowList.add(flowTask);
- }
- page.setRecords(flowList);
- return TableDataInfo.build(page);
- }
-
- @Override
- public List selectTodoProcessList(ProcessQuery processQuery) {
- TaskQuery taskQuery = taskService.createTaskQuery()
- .active()
- .includeProcessVariables()
- .taskCandidateOrAssigned(TaskUtils.getUserId())
- .taskCandidateGroupIn(TaskUtils.getCandidateGroup())
- .orderByTaskCreateTime().desc();
- // 构建搜索条件
- ProcessUtils.buildProcessSearch(taskQuery, processQuery);
- List taskList = taskQuery.list();
- List taskVoList = new ArrayList<>();
- for (Task task : taskList) {
- WfTaskVo taskVo = new WfTaskVo();
- // 当前流程信息
- taskVo.setTaskId(task.getId());
- taskVo.setTaskDefKey(task.getTaskDefinitionKey());
- taskVo.setCreateTime(task.getCreateTime());
- taskVo.setProcDefId(task.getProcessDefinitionId());
- taskVo.setTaskName(task.getName());
- // 流程定义信息
- ProcessDefinition pd = repositoryService.createProcessDefinitionQuery()
- .processDefinitionId(task.getProcessDefinitionId())
- .singleResult();
- taskVo.setDeployId(pd.getDeploymentId());
- taskVo.setProcDefName(pd.getName());
- taskVo.setProcDefVersion(pd.getVersion());
- taskVo.setProcInsId(task.getProcessInstanceId());
-
- // 流程发起人信息
- HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery()
- .processInstanceId(task.getProcessInstanceId())
- .singleResult();
- Long userId = Long.parseLong(historicProcessInstance.getStartUserId());
- String nickName = userService.selectNickNameById(userId);
- taskVo.setStartUserId(userId);
- taskVo.setStartUserName(nickName);
-
- taskVoList.add(taskVo);
- }
- return taskVoList;
- }
-
- @Override
- public TableDataInfo selectPageClaimProcessList(ProcessQuery processQuery, PageQuery pageQuery) {
- Page page = new Page<>();
- TaskQuery taskQuery = taskService.createTaskQuery()
- .active()
- .includeProcessVariables()
- .taskCandidateUser(TaskUtils.getUserId())
- .taskCandidateGroupIn(TaskUtils.getCandidateGroup())
- .orderByTaskCreateTime().desc();
- // 构建搜索条件
- ProcessUtils.buildProcessSearch(taskQuery, processQuery);
- page.setTotal(taskQuery.count());
- int offset = pageQuery.getPageSize() * (pageQuery.getPageNum() - 1);
- List taskList = taskQuery.listPage(offset, pageQuery.getPageSize());
- List flowList = new ArrayList<>();
- for (Task task : taskList) {
- WfTaskVo flowTask = new WfTaskVo();
- // 当前流程信息
- flowTask.setTaskId(task.getId());
- flowTask.setTaskDefKey(task.getTaskDefinitionKey());
- flowTask.setCreateTime(task.getCreateTime());
- flowTask.setProcDefId(task.getProcessDefinitionId());
- flowTask.setTaskName(task.getName());
- // 流程定义信息
- ProcessDefinition pd = repositoryService.createProcessDefinitionQuery()
- .processDefinitionId(task.getProcessDefinitionId())
- .singleResult();
- flowTask.setDeployId(pd.getDeploymentId());
- flowTask.setProcDefName(pd.getName());
- flowTask.setProcDefVersion(pd.getVersion());
- flowTask.setProcInsId(task.getProcessInstanceId());
-
- // 流程发起人信息
- HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery()
- .processInstanceId(task.getProcessInstanceId())
- .singleResult();
- Long userId = Long.parseLong(historicProcessInstance.getStartUserId());
- String nickName = userService.selectNickNameById(userId);
- flowTask.setStartUserId(userId);
- flowTask.setStartUserName(nickName);
-
- flowList.add(flowTask);
- }
- page.setRecords(flowList);
- return TableDataInfo.build(page);
- }
-
- @Override
- public List selectClaimProcessList(ProcessQuery processQuery) {
- TaskQuery taskQuery = taskService.createTaskQuery()
- .active()
- .includeProcessVariables()
- .taskCandidateUser(TaskUtils.getUserId())
- .taskCandidateGroupIn(TaskUtils.getCandidateGroup())
- .orderByTaskCreateTime().desc();
- // 构建搜索条件
- ProcessUtils.buildProcessSearch(taskQuery, processQuery);
- List taskList = taskQuery.list();
- List flowList = new ArrayList<>();
- for (Task task : taskList) {
- WfTaskVo flowTask = new WfTaskVo();
- // 当前流程信息
- flowTask.setTaskId(task.getId());
- flowTask.setTaskDefKey(task.getTaskDefinitionKey());
- flowTask.setCreateTime(task.getCreateTime());
- flowTask.setProcDefId(task.getProcessDefinitionId());
- flowTask.setTaskName(task.getName());
- // 流程定义信息
- ProcessDefinition pd = repositoryService.createProcessDefinitionQuery()
- .processDefinitionId(task.getProcessDefinitionId())
- .singleResult();
- flowTask.setDeployId(pd.getDeploymentId());
- flowTask.setProcDefName(pd.getName());
- flowTask.setProcDefVersion(pd.getVersion());
- flowTask.setProcInsId(task.getProcessInstanceId());
-
- // 流程发起人信息
- HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery()
- .processInstanceId(task.getProcessInstanceId())
- .singleResult();
- Long userId = Long.parseLong(historicProcessInstance.getStartUserId());
- String nickName = userService.selectNickNameById(userId);
- flowTask.setStartUserId(userId);
- flowTask.setStartUserName(nickName);
-
- flowList.add(flowTask);
- }
- return flowList;
- }
-
- @Override
- public TableDataInfo selectPageFinishedProcessList(ProcessQuery processQuery, PageQuery pageQuery) {
- Page page = new Page<>();
- HistoricTaskInstanceQuery taskInstanceQuery = historyService.createHistoricTaskInstanceQuery()
- .includeProcessVariables()
- .finished()
- .taskAssignee(TaskUtils.getUserId())
- .orderByHistoricTaskInstanceEndTime()
- .desc();
- // 构建搜索条件
- ProcessUtils.buildProcessSearch(taskInstanceQuery, processQuery);
- int offset = pageQuery.getPageSize() * (pageQuery.getPageNum() - 1);
- List historicTaskInstanceList = taskInstanceQuery.listPage(offset, pageQuery.getPageSize());
- List hisTaskList = new ArrayList<>();
- for (HistoricTaskInstance histTask : historicTaskInstanceList) {
- WfTaskVo flowTask = new WfTaskVo();
- // 当前流程信息
- flowTask.setTaskId(histTask.getId());
- // 审批人员信息
- flowTask.setCreateTime(histTask.getCreateTime());
- flowTask.setFinishTime(histTask.getEndTime());
- flowTask.setDuration(DateUtil.formatBetween(histTask.getDurationInMillis(), BetweenFormatter.Level.SECOND));
- flowTask.setProcDefId(histTask.getProcessDefinitionId());
- flowTask.setTaskDefKey(histTask.getTaskDefinitionKey());
- flowTask.setTaskName(histTask.getName());
-
- // 流程定义信息
- ProcessDefinition pd = repositoryService.createProcessDefinitionQuery()
- .processDefinitionId(histTask.getProcessDefinitionId())
- .singleResult();
- flowTask.setDeployId(pd.getDeploymentId());
- flowTask.setProcDefName(pd.getName());
- flowTask.setProcDefVersion(pd.getVersion());
- flowTask.setProcInsId(histTask.getProcessInstanceId());
- flowTask.setHisProcInsId(histTask.getProcessInstanceId());
-
- // 流程发起人信息
- HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery()
- .processInstanceId(histTask.getProcessInstanceId())
- .singleResult();
- Long userId = Long.parseLong(historicProcessInstance.getStartUserId());
- String nickName = userService.selectNickNameById(userId);
- flowTask.setStartUserId(userId);
- flowTask.setStartUserName(nickName);
-
- // 流程变量
- flowTask.setProcVars(histTask.getProcessVariables());
-
- hisTaskList.add(flowTask);
- }
- page.setTotal(taskInstanceQuery.count());
- page.setRecords(hisTaskList);
-// Map result = new HashMap<>();
-// result.put("result",page);
-// result.put("finished",true);
- return TableDataInfo.build(page);
- }
-
- @Override
- public List selectFinishedProcessList(ProcessQuery processQuery) {
- HistoricTaskInstanceQuery taskInstanceQuery = historyService.createHistoricTaskInstanceQuery()
- .includeProcessVariables()
- .finished()
- .taskAssignee(TaskUtils.getUserId())
- .orderByHistoricTaskInstanceEndTime()
- .desc();
- // 构建搜索条件
- ProcessUtils.buildProcessSearch(taskInstanceQuery, processQuery);
- List historicTaskInstanceList = taskInstanceQuery.list();
- List hisTaskList = new ArrayList<>();
- for (HistoricTaskInstance histTask : historicTaskInstanceList) {
- WfTaskVo flowTask = new WfTaskVo();
- // 当前流程信息
- flowTask.setTaskId(histTask.getId());
- // 审批人员信息
- flowTask.setCreateTime(histTask.getCreateTime());
- flowTask.setFinishTime(histTask.getEndTime());
- flowTask.setDuration(DateUtil.formatBetween(histTask.getDurationInMillis(), BetweenFormatter.Level.SECOND));
- flowTask.setProcDefId(histTask.getProcessDefinitionId());
- flowTask.setTaskDefKey(histTask.getTaskDefinitionKey());
- flowTask.setTaskName(histTask.getName());
-
- // 流程定义信息
- ProcessDefinition pd = repositoryService.createProcessDefinitionQuery()
- .processDefinitionId(histTask.getProcessDefinitionId())
- .singleResult();
- flowTask.setDeployId(pd.getDeploymentId());
- flowTask.setProcDefName(pd.getName());
- flowTask.setProcDefVersion(pd.getVersion());
- flowTask.setProcInsId(histTask.getProcessInstanceId());
- flowTask.setHisProcInsId(histTask.getProcessInstanceId());
-
- // 流程发起人信息
- HistoricProcessInstance historicProcessInstance = historyService.createHistoricProcessInstanceQuery()
- .processInstanceId(histTask.getProcessInstanceId())
- .singleResult();
- Long userId = Long.parseLong(historicProcessInstance.getStartUserId());
- String nickName = userService.selectNickNameById(userId);
- flowTask.setStartUserId(userId);
- flowTask.setStartUserName(nickName);
-
- // 流程变量
- flowTask.setProcVars(histTask.getProcessVariables());
-
- hisTaskList.add(flowTask);
- }
- return hisTaskList;
- }
-
- @Override
- public FormConf selectFormContent(String definitionId, String deployId, String procInsId) {
- BpmnModel bpmnModel = repositoryService.getBpmnModel(definitionId);
- if (ObjectUtil.isNull(bpmnModel)) {
- throw new RuntimeException("获取流程设计失败!");
- }
- StartEvent startEvent = ModelUtils.getStartEvent(bpmnModel);
- WfDeployForm deployForm = deployFormMapper.selectOne(new LambdaQueryWrapper()
- .eq(WfDeployForm::getDeployId, deployId)
- .eq(WfDeployForm::getFormKey, startEvent.getFormKey())
- .eq(WfDeployForm::getNodeKey, startEvent.getId()));
- FormConf formConf = JsonUtils.parseObject(deployForm.getContent(), FormConf.class);
- if (ObjectUtil.isNull(formConf)) {
- throw new RuntimeException("获取流程表单失败!");
- }
- if (ObjectUtil.isNotEmpty(procInsId)) {
- // 获取流程实例
- HistoricProcessInstance historicProcIns = historyService.createHistoricProcessInstanceQuery()
- .processInstanceId(procInsId)
- .includeProcessVariables()
- .singleResult();
- // 填充表单信息
- ProcessFormUtils.fillFormData(formConf, historicProcIns.getProcessVariables());
- }
- return formConf;
- }
-
- /**
- * 根据流程定义ID启动流程实例
- *
- * @param procDefId 流程定义Id
- * @param variables 流程变量
- * @return
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void startProcessByDefId(String procDefId, Map variables) {
- try {
- ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
- .processDefinitionId(procDefId).singleResult();
- startProcess(processDefinition, variables);
- } catch (Exception e) {
- e.printStackTrace();
- throw new ServiceException("流程启动错误");
- }
- }
-
- /**
- * 通过DefinitionKey启动流程
- * @param procDefKey 流程定义Key
- * @param variables 扩展参数
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void startProcessByDefKey(String procDefKey, Map variables) {
- try {
- ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
- .processDefinitionKey(procDefKey).latestVersion().singleResult();
- startProcess(processDefinition, variables);
- } catch (Exception e) {
- e.printStackTrace();
- throw new ServiceException("流程启动错误");
- }
- }
-
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void deleteProcessByIds(String[] instanceIds) {
- List ids = Arrays.asList(instanceIds);
- // 校验流程是否结束
- long activeInsCount = runtimeService.createProcessInstanceQuery()
- .processInstanceIds(new HashSet<>(ids)).active().count();
- if (activeInsCount > 0) {
- throw new ServiceException("不允许删除进行中的流程实例");
- }
- // 删除历史流程实例
- historyService.bulkDeleteHistoricProcessInstances(ids);
- }
-
- /**
- * 读取xml文件
- * @param processDefId 流程定义ID
- */
- @Override
- public String queryBpmnXmlById(String processDefId) {
- InputStream inputStream = repositoryService.getProcessModel(processDefId);
- try {
- return IoUtil.readUtf8(inputStream);
- } catch (IORuntimeException exception) {
- throw new RuntimeException("加载xml文件异常");
- }
- }
-
- /**
- * 流程详情信息
- *
- * @param procInsId 流程实例ID
- * @param taskId 任务ID
- * @return
- */
- @Override
- public WfDetailVo queryProcessDetail(String procInsId, String taskId) {
- WfDetailVo detailVo = new WfDetailVo();
- // 获取流程实例
- HistoricProcessInstance historicProcIns = historyService.createHistoricProcessInstanceQuery()
- .processInstanceId(procInsId)
- .includeProcessVariables()
- .singleResult();
- if (StringUtils.isNotBlank(taskId)) {
- HistoricTaskInstance taskIns = historyService.createHistoricTaskInstanceQuery()
- .taskId(taskId)
- .includeIdentityLinks()
- .includeProcessVariables()
- .includeTaskLocalVariables()
- .singleResult();
- if (taskIns == null) {
- throw new ServiceException("没有可办理的任务!");
- }
- detailVo.setTaskFormData(currTaskFormData(historicProcIns.getDeploymentId(), taskIns));
- }
- // 获取Bpmn模型信息
- InputStream inputStream = repositoryService.getProcessModel(historicProcIns.getProcessDefinitionId());
- String bpmnXmlStr = StrUtil.utf8Str(IoUtil.readBytes(inputStream, false));
- BpmnModel bpmnModel = ModelUtils.getBpmnModel(bpmnXmlStr);
- detailVo.setBpmnXml(bpmnXmlStr);
- detailVo.setHistoryProcNodeList(historyProcNodeList(historicProcIns));
- detailVo.setProcessFormList(processFormList(bpmnModel, historicProcIns));
- detailVo.setFlowViewer(getFlowViewer(bpmnModel, procInsId));
- return detailVo;
- }
-
- /**
- * 启动流程实例
- */
- private void startProcess(ProcessDefinition procDef, Map variables) {
- if (ObjectUtil.isNotNull(procDef) && procDef.isSuspended()) {
- throw new ServiceException("流程已被挂起,请先激活流程");
- }
- // 设置流程发起人Id到流程中
- String userIdStr = TaskUtils.getUserId();
- identityService.setAuthenticatedUserId(userIdStr);
- variables.put(BpmnXMLConstants.ATTRIBUTE_EVENT_START_INITIATOR, userIdStr);
- // 设置流程状态为进行中
- variables.put(ProcessConstants.PROCESS_STATUS_KEY, ProcessStatus.RUNNING.getStatus());
-
- // 发起流程实例
- ProcessInstance processInstance = runtimeService.startProcessInstanceById(procDef.getId(), variables);
-
- // 如果包含审批人信息,则设置下一个任务的审批人
- try {
- if (variables.containsKey("flowable") && variables.get("flowable") != null) {
- Object flowableObj = variables.get("flowable");
- if (flowableObj instanceof Map) {
- @SuppressWarnings("unchecked")
- Map flowable = (Map) flowableObj;
- if (flowable.containsKey("candidateUsers")) {
- Object candidateUsersObj = flowable.get("candidateUsers");
- if (candidateUsersObj != null) {
- String candidateUsers = candidateUsersObj.toString();
- if (StringUtils.isNotBlank(candidateUsers)) {
- // 获取流程模型
- BpmnModel bpmnModel = repositoryService.getBpmnModel(processInstance.getProcessDefinitionId());
- // 设置下一个任务的审批人
- this.assignNextUsers(bpmnModel, processInstance.getProcessInstanceId(), candidateUsers);
- }
- }
- }
- }
- }
- } catch (Exception e) {
- // 记录异常但不影响流程启动
- e.printStackTrace();
- }
-
- // 第一个用户任务为发起人,则自动完成任务
- wfTaskService.startFirstTask(processInstance, variables);
- }
-
- /**
- * 设置下一个任务的审批人
- *
- * @param bpmnModel 流程模型
- * @param processInstanceId 流程实例ID
- * @param candidateUsers 候选人字符串
- */
- private void assignNextUsers(BpmnModel bpmnModel, String processInstanceId, String candidateUsers) {
- if (StringUtils.isBlank(candidateUsers)) {
- return;
- }
-
- try {
- // 获取当前流程实例的所有任务
- List tasks = taskService.createTaskQuery()
- .processInstanceId(processInstanceId)
- .list();
-
- if (CollUtil.isEmpty(tasks)) {
- return;
- }
-
- // 为每个任务设置候选人
- for (Task task : tasks) {
- // 解析候选人字符串,格式可能是:userId1,userId2,userId3
- String[] userIds = candidateUsers.split(",");
- for (String userId : userIds) {
- if (StringUtils.isNotBlank(userId)) {
- // 添加候选人
- taskService.addCandidateUser(task.getId(), userId.trim());
- }
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
-
-
- /**
- * 获取流程变量
- *
- * @param taskId 任务ID
- * @return 流程变量
- */
- private Map getProcessVariables(String taskId) {
- HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery()
- .includeProcessVariables()
- .finished()
- .taskId(taskId)
- .singleResult();
- if (Objects.nonNull(historicTaskInstance)) {
- return historicTaskInstance.getProcessVariables();
- }
- return taskService.getVariables(taskId);
- }
-
- /**
- * 获取当前任务流程表单信息
- */
- private FormConf currTaskFormData(String deployId, HistoricTaskInstance taskIns) {
- WfDeployFormVo deployFormVo = deployFormMapper.selectVoOne(new LambdaQueryWrapper()
- .eq(WfDeployForm::getDeployId, deployId)
- .eq(WfDeployForm::getFormKey, taskIns.getFormKey())
- .eq(WfDeployForm::getNodeKey, taskIns.getTaskDefinitionKey()));
- if (ObjectUtil.isNotEmpty(deployFormVo)) {
- FormConf currTaskFormData = JsonUtils.parseObject(deployFormVo.getContent(), FormConf.class);
- if (null != currTaskFormData) {
- currTaskFormData.setFormBtns(false);
- ProcessFormUtils.fillFormData(currTaskFormData, taskIns.getTaskLocalVariables());
- return currTaskFormData;
- }
- }
- return null;
- }
-
- /**
- * 获取历史流程表单信息
- */
- private List processFormList(BpmnModel bpmnModel, HistoricProcessInstance historicProcIns) {
- List procFormList = new ArrayList<>();
-
- List activityInstanceList = historyService.createHistoricActivityInstanceQuery()
- .processInstanceId(historicProcIns.getId()).finished()
- .activityTypes(CollUtil.newHashSet(BpmnXMLConstants.ELEMENT_EVENT_START, BpmnXMLConstants.ELEMENT_TASK_USER))
- .orderByHistoricActivityInstanceStartTime().asc()
- .list();
- List processFormKeys = new ArrayList<>();
- for (HistoricActivityInstance activityInstance : activityInstanceList) {
- // 获取当前节点流程元素信息
- FlowElement flowElement = ModelUtils.getFlowElementById(bpmnModel, activityInstance.getActivityId());
- // 获取当前节点表单Key
- String formKey = ModelUtils.getFormKey(flowElement);
- if (formKey == null) {
- continue;
- }
- boolean localScope = Convert.toBool(ModelUtils.getElementAttributeValue(flowElement, ProcessConstants.PROCESS_FORM_LOCAL_SCOPE), false);
- Map variables;
- if (localScope) {
- // 查询任务节点参数,并转换成Map
- variables = historyService.createHistoricVariableInstanceQuery()
- .processInstanceId(historicProcIns.getId())
- .taskId(activityInstance.getTaskId())
- .list()
- .stream()
- .collect(Collectors.toMap(HistoricVariableInstance::getVariableName, HistoricVariableInstance::getValue));
- } else {
- if (processFormKeys.contains(formKey)) {
- continue;
- }
- variables = historicProcIns.getProcessVariables();
- processFormKeys.add(formKey);
- }
- // 非节点表单此处查询结果可能有多条,只获取第一条信息
- List formInfoList = deployFormMapper.selectVoList(new LambdaQueryWrapper()
- .eq(WfDeployForm::getDeployId, historicProcIns.getDeploymentId())
- .eq(WfDeployForm::getFormKey, formKey)
- .eq(localScope, WfDeployForm::getNodeKey, flowElement.getId()));
-
- //@update by Brath:避免空集合导致的NULL空指针
- WfDeployFormVo formInfo = formInfoList.stream().findFirst().orElse(null);
-
- if (ObjectUtil.isNotNull(formInfo)) {
- // 旧数据 formInfo.getFormName() 为 null
- String formName = Optional.ofNullable(formInfo.getFormName()).orElse(StringUtils.EMPTY);
- String title = localScope ? formName.concat("(" + flowElement.getName() + ")") : formName;
- FormConf formConf = JsonUtils.parseObject(formInfo.getContent(), FormConf.class);
- if (null != formConf) {
- formConf.setTitle(title);
- formConf.setDisabled(true);
- formConf.setFormBtns(false);
- ProcessFormUtils.fillFormData(formConf, variables);
- procFormList.add(formConf);
- }
- }
- }
- return procFormList;
- }
-
- @Deprecated
- private void buildStartFormData(HistoricProcessInstance historicProcIns, Process process, String deployId, List procFormList) {
- procFormList = procFormList == null ? new ArrayList<>() : procFormList;
- HistoricActivityInstance startInstance = historyService.createHistoricActivityInstanceQuery()
- .processInstanceId(historicProcIns.getId())
- .activityId(historicProcIns.getStartActivityId())
- .singleResult();
- StartEvent startEvent = (StartEvent) process.getFlowElement(startInstance.getActivityId());
- WfDeployFormVo startFormInfo = deployFormMapper.selectVoOne(new LambdaQueryWrapper()
- .eq(WfDeployForm::getDeployId, deployId)
- .eq(WfDeployForm::getFormKey, startEvent.getFormKey())
- .eq(WfDeployForm::getNodeKey, startEvent.getId()));
- if (ObjectUtil.isNotNull(startFormInfo)) {
- FormConf formConf = JsonUtils.parseObject(startFormInfo.getContent(), FormConf.class);
- if (null != formConf) {
- formConf.setTitle(startEvent.getName());
- formConf.setDisabled(true);
- formConf.setFormBtns(false);
- ProcessFormUtils.fillFormData(formConf, historicProcIns.getProcessVariables());
- procFormList.add(formConf);
- }
- }
- }
-
- @Deprecated
- private void buildUserTaskFormData(String procInsId, String deployId, Process process, List procFormList) {
- procFormList = procFormList == null ? new ArrayList<>() : procFormList;
- List activityInstanceList = historyService.createHistoricActivityInstanceQuery()
- .processInstanceId(procInsId).finished()
- .activityType(BpmnXMLConstants.ELEMENT_TASK_USER)
- .orderByHistoricActivityInstanceStartTime().asc()
- .list();
- for (HistoricActivityInstance instanceItem : activityInstanceList) {
- UserTask userTask = (UserTask) process.getFlowElement(instanceItem.getActivityId(), true);
- String formKey = userTask.getFormKey();
- if (formKey == null) {
- continue;
- }
- // 查询任务节点参数,并转换成Map
- Map variables = historyService.createHistoricVariableInstanceQuery()
- .processInstanceId(procInsId)
- .taskId(instanceItem.getTaskId())
- .list()
- .stream()
- .collect(Collectors.toMap(HistoricVariableInstance::getVariableName, HistoricVariableInstance::getValue));
- WfDeployFormVo deployFormVo = deployFormMapper.selectVoOne(new LambdaQueryWrapper()
- .eq(WfDeployForm::getDeployId, deployId)
- .eq(WfDeployForm::getFormKey, formKey)
- .eq(WfDeployForm::getNodeKey, userTask.getId()));
- if (ObjectUtil.isNotNull(deployFormVo)) {
- FormConf formConf = JsonUtils.parseObject(deployFormVo.getContent(), FormConf.class);
- if (null != formConf) {
- formConf.setTitle(userTask.getName());
- formConf.setDisabled(true);
- formConf.setFormBtns(false);
- ProcessFormUtils.fillFormData(formConf, variables);
- procFormList.add(formConf);
- }
- }
- }
- }
-
- /**
- * 获取历史任务信息列表
- */
- private List historyProcNodeList(HistoricProcessInstance historicProcIns) {
- String procInsId = historicProcIns.getId();
- List historicActivityInstanceList = historyService.createHistoricActivityInstanceQuery()
- .processInstanceId(procInsId)
- .activityTypes(CollUtil.newHashSet(BpmnXMLConstants.ELEMENT_EVENT_START, BpmnXMLConstants.ELEMENT_EVENT_END, BpmnXMLConstants.ELEMENT_TASK_USER))
- .orderByHistoricActivityInstanceStartTime().desc()
- .orderByHistoricActivityInstanceEndTime().desc()
- .list();
-
- List commentList = taskService.getProcessInstanceComments(procInsId);
-
- List elementVoList = new ArrayList<>();
- for (HistoricActivityInstance activityInstance : historicActivityInstanceList) {
- WfProcNodeVo elementVo = new WfProcNodeVo();
- elementVo.setProcDefId(activityInstance.getProcessDefinitionId());
- elementVo.setActivityId(activityInstance.getActivityId());
- elementVo.setActivityName(activityInstance.getActivityName());
- elementVo.setActivityType(activityInstance.getActivityType());
- elementVo.setCreateTime(activityInstance.getStartTime());
- elementVo.setEndTime(activityInstance.getEndTime());
- if (ObjectUtil.isNotNull(activityInstance.getDurationInMillis())) {
- elementVo.setDuration(DateUtil.formatBetween(activityInstance.getDurationInMillis(), BetweenFormatter.Level.SECOND));
- }
-
- if (BpmnXMLConstants.ELEMENT_EVENT_START.equals(activityInstance.getActivityType())) {
- if (ObjectUtil.isNotNull(historicProcIns)) {
- Long userId = Long.parseLong(historicProcIns.getStartUserId());
- String nickName = userService.selectNickNameById(userId);
- if (nickName != null) {
- elementVo.setAssigneeId(userId);
- elementVo.setAssigneeName(nickName);
- }
- }
- } else if (BpmnXMLConstants.ELEMENT_TASK_USER.equals(activityInstance.getActivityType())) {
- if (StringUtils.isNotBlank(activityInstance.getAssignee())) {
- Long userId = Long.parseLong(activityInstance.getAssignee());
- String nickName = userService.selectNickNameById(userId);
- elementVo.setAssigneeId(userId);
- elementVo.setAssigneeName(nickName);
- }
- // 展示审批人员
- List linksForTask = historyService.getHistoricIdentityLinksForTask(activityInstance.getTaskId());
- StringBuilder stringBuilder = new StringBuilder();
- for (HistoricIdentityLink identityLink : linksForTask) {
- if ("candidate".equals(identityLink.getType())) {
- if (StringUtils.isNotBlank(identityLink.getUserId())) {
- Long userId = Long.parseLong(identityLink.getUserId());
- String nickName = userService.selectNickNameById(userId);
- stringBuilder.append(nickName).append(",");
- }
- if (StringUtils.isNotBlank(identityLink.getGroupId())) {
- if (identityLink.getGroupId().startsWith(TaskConstants.ROLE_GROUP_PREFIX)) {
- Long roleId = Long.parseLong(StringUtils.stripStart(identityLink.getGroupId(), TaskConstants.ROLE_GROUP_PREFIX));
- SysRole role = roleService.selectRoleById(roleId);
- stringBuilder.append(role.getRoleName()).append(",");
- } else if (identityLink.getGroupId().startsWith(TaskConstants.DEPT_GROUP_PREFIX)) {
- Long deptId = Long.parseLong(StringUtils.stripStart(identityLink.getGroupId(), TaskConstants.DEPT_GROUP_PREFIX));
- SysDept dept = deptService.selectDeptById(deptId);
- stringBuilder.append(dept.getDeptName()).append(",");
- }
- }
- }
- }
- if (StringUtils.isNotBlank(stringBuilder)) {
- elementVo.setCandidate(stringBuilder.substring(0, stringBuilder.length() - 1));
- }
- // 获取意见评论内容
- if (CollUtil.isNotEmpty(commentList)) {
- List comments = new ArrayList<>();
- for (Comment comment : commentList) {
-
- if (comment.getTaskId().equals(activityInstance.getTaskId())) {
- comments.add(comment);
- }
- }
- elementVo.setCommentList(comments);
- }
- }
- elementVoList.add(elementVo);
- }
- return elementVoList;
- }
-
- /**
- * 获取流程执行过程
- *
- * @param procInsId
- * @return
- */
- private WfViewerVo getFlowViewer(BpmnModel bpmnModel, String procInsId) {
- // 构建查询条件
- HistoricActivityInstanceQuery query = historyService.createHistoricActivityInstanceQuery()
- .processInstanceId(procInsId);
- List allActivityInstanceList = query.list();
- if (CollUtil.isEmpty(allActivityInstanceList)) {
- return new WfViewerVo();
- }
- // 查询所有已完成的元素
- List finishedElementList = allActivityInstanceList.stream()
- .filter(item -> ObjectUtil.isNotNull(item.getEndTime())).collect(Collectors.toList());
- // 所有已完成的连线
- Set finishedSequenceFlowSet = new HashSet<>();
- // 所有已完成的任务节点
- Set finishedTaskSet = new HashSet<>();
- finishedElementList.forEach(item -> {
- if (BpmnXMLConstants.ELEMENT_SEQUENCE_FLOW.equals(item.getActivityType())) {
- finishedSequenceFlowSet.add(item.getActivityId());
- } else {
- finishedTaskSet.add(item.getActivityId());
- }
- });
- // 查询所有未结束的节点
- Set unfinishedTaskSet = allActivityInstanceList.stream()
- .filter(item -> ObjectUtil.isNull(item.getEndTime()))
- .map(HistoricActivityInstance::getActivityId)
- .collect(Collectors.toSet());
- // DFS 查询未通过的元素集合
- Set rejectedSet = FlowableUtils.dfsFindRejects(bpmnModel, unfinishedTaskSet, finishedSequenceFlowSet, finishedTaskSet);
- return new WfViewerVo(finishedTaskSet, finishedSequenceFlowSet, unfinishedTaskSet, rejectedSet);
- }
-}
diff --git a/klp-system/src/main/java/com/klp/workflow/service/impl/WfTaskServiceImpl.java b/klp-system/src/main/java/com/klp/workflow/service/impl/WfTaskServiceImpl.java
deleted file mode 100644
index 5bee9e87..00000000
--- a/klp-system/src/main/java/com/klp/workflow/service/impl/WfTaskServiceImpl.java
+++ /dev/null
@@ -1,625 +0,0 @@
-package com.klp.workflow.service.impl;
-
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.convert.Convert;
-import cn.hutool.core.util.ObjectUtil;
-import cn.hutool.core.util.StrUtil;
-import com.klp.common.core.service.UserService;
-import com.klp.common.exception.ServiceException;
-import com.klp.common.helper.LoginHelper;
-import com.klp.common.utils.StringUtils;
-import com.klp.flowable.common.constant.ProcessConstants;
-import com.klp.flowable.common.constant.TaskConstants;
-import com.klp.flowable.common.enums.FlowComment;
-import com.klp.flowable.common.enums.ProcessStatus;
-import com.klp.flowable.factory.FlowServiceFactory;
-import com.klp.flowable.flow.CustomProcessDiagramGenerator;
-import com.klp.flowable.flow.FlowableUtils;
-import com.klp.flowable.utils.ModelUtils;
-import com.klp.flowable.utils.TaskUtils;
-import com.klp.workflow.domain.bo.WfTaskBo;
-import com.klp.workflow.service.IWfCopyService;
-import com.klp.workflow.service.IWfTaskService;
-import lombok.RequiredArgsConstructor;
-import lombok.extern.slf4j.Slf4j;
-import org.apache.commons.collections4.CollectionUtils;
-import org.flowable.bpmn.constants.BpmnXMLConstants;
-import org.flowable.bpmn.model.Process;
-import org.flowable.bpmn.model.*;
-import org.flowable.common.engine.api.FlowableException;
-import org.flowable.common.engine.api.FlowableObjectNotFoundException;
-import org.flowable.common.engine.impl.identity.Authentication;
-import org.flowable.engine.ProcessEngineConfiguration;
-import org.flowable.engine.history.HistoricActivityInstance;
-import org.flowable.engine.history.HistoricProcessInstance;
-import org.flowable.engine.repository.ProcessDefinition;
-import org.flowable.engine.runtime.Execution;
-import org.flowable.engine.runtime.ProcessInstance;
-import org.flowable.image.ProcessDiagramGenerator;
-import org.flowable.task.api.DelegationState;
-import org.flowable.task.api.Task;
-import org.flowable.task.api.history.HistoricTaskInstance;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.io.InputStream;
-import java.util.*;
-import java.util.stream.Collectors;
-
-/**
- * @author KonBAI
- * @createTime 2022/3/10 00:12
- */
-@RequiredArgsConstructor
-@Service
-@Slf4j
-public class WfTaskServiceImpl extends FlowServiceFactory implements IWfTaskService {
-
- private final UserService sysUserService;
-
- private final IWfCopyService copyService;
-
- /**
- * 完成任务
- *
- * @param taskBo 请求实体参数
- */
- @Transactional(rollbackFor = Exception.class)
- @Override
- public void complete(WfTaskBo taskBo) {
- Task task = taskService.createTaskQuery().taskId(taskBo.getTaskId()).singleResult();
- if (Objects.isNull(task)) {
- throw new ServiceException("任务不存在");
- }
- // 获取 bpmn 模型
- BpmnModel bpmnModel = repositoryService.getBpmnModel(task.getProcessDefinitionId());
- identityService.setAuthenticatedUserId(TaskUtils.getUserId());
- if (DelegationState.PENDING.equals(task.getDelegationState())) {
- taskService.addComment(taskBo.getTaskId(), taskBo.getProcInsId(), FlowComment.DELEGATE.getType(), taskBo.getComment());
- taskService.resolveTask(taskBo.getTaskId());
- } else {
- taskService.addComment(taskBo.getTaskId(), taskBo.getProcInsId(), FlowComment.NORMAL.getType(), taskBo.getComment());
- taskService.setAssignee(taskBo.getTaskId(), TaskUtils.getUserId());
- if (ObjectUtil.isNotEmpty(taskBo.getVariables())) {
- // 获取模型信息
- String localScopeValue = ModelUtils.getUserTaskAttributeValue(bpmnModel, task.getTaskDefinitionKey(), ProcessConstants.PROCESS_FORM_LOCAL_SCOPE);
- boolean localScope = Convert.toBool(localScopeValue, false);
- taskService.complete(taskBo.getTaskId(), taskBo.getVariables(), localScope);
- } else {
- taskService.complete(taskBo.getTaskId());
- }
- }
- // 设置任务节点名称
- taskBo.setTaskName(task.getName());
- // 处理下一级审批人
- if (StringUtils.isNotBlank(taskBo.getNextUserIds())) {
- this.assignNextUsers(bpmnModel, taskBo.getProcInsId(), taskBo.getNextUserIds());
- }
- // 处理抄送用户
- if (!copyService.makeCopy(taskBo)) {
- throw new RuntimeException("抄送任务失败");
- }
- }
-
- /**
- * 拒绝任务
- *
- * @param taskBo
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void taskReject(WfTaskBo taskBo) {
- // 当前任务 task
- Task task = taskService.createTaskQuery().taskId(taskBo.getTaskId()).singleResult();
- if (ObjectUtil.isNull(task)) {
- throw new RuntimeException("获取任务信息异常!");
- }
- if (task.isSuspended()) {
- throw new RuntimeException("任务处于挂起状态");
- }
- // 获取流程实例
- ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
- .processInstanceId(taskBo.getProcInsId())
- .singleResult();
- if (processInstance == null) {
- throw new RuntimeException("流程实例不存在,请确认!");
- }
- // 获取流程定义信息
- ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery()
- .processDefinitionId(task.getProcessDefinitionId())
- .singleResult();
-
- identityService.setAuthenticatedUserId(TaskUtils.getUserId());
- // 添加审批意见
- taskService.addComment(taskBo.getTaskId(), taskBo.getProcInsId(), FlowComment.REJECT.getType(), taskBo.getComment());
- // 设置流程状态为已终结
- runtimeService.setVariable(processInstance.getId(), ProcessConstants.PROCESS_STATUS_KEY, ProcessStatus.TERMINATED.getStatus());
- // 获取所有节点信息
- BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinition.getId());
- EndEvent endEvent = ModelUtils.getEndEvent(bpmnModel);
- // 终止流程
- List executions = runtimeService.createExecutionQuery().parentId(task.getProcessInstanceId()).list();
- List executionIds = executions.stream().map(Execution::getId).collect(Collectors.toList());
- runtimeService.createChangeActivityStateBuilder()
- .processInstanceId(task.getProcessInstanceId())
- .moveExecutionsToSingleActivityId(executionIds, endEvent.getId())
- .changeState();
- // 处理抄送用户
- if (!copyService.makeCopy(taskBo)) {
- throw new RuntimeException("抄送任务失败");
- }
- }
-
- /**
- * 退回任务
- *
- * @param bo 请求实体参数
- */
- @Transactional(rollbackFor = Exception.class)
- @Override
- public void taskReturn(WfTaskBo bo) {
- // 当前任务 task
- Task task = taskService.createTaskQuery().taskId(bo.getTaskId()).singleResult();
- if (ObjectUtil.isNull(task)) {
- throw new RuntimeException("获取任务信息异常!");
- }
- if (task.isSuspended()) {
- throw new RuntimeException("任务处于挂起状态");
- }
- // 获取流程定义信息
- ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(task.getProcessDefinitionId()).singleResult();
- // 获取流程模型信息
- BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinition.getId());
- // 获取当前任务节点元素
- FlowElement source = ModelUtils.getFlowElementById(bpmnModel, task.getTaskDefinitionKey());
- // 获取跳转的节点元素
- FlowElement target = ModelUtils.getFlowElementById(bpmnModel, bo.getTargetKey());
- // 从当前节点向前扫描,判断当前节点与目标节点是否属于串行,若目标节点是在并行网关上或非同一路线上,不可跳转
- boolean isSequential = ModelUtils.isSequentialReachable(source, target, new HashSet<>());
- if (!isSequential) {
- throw new RuntimeException("当前节点相对于目标节点,不属于串行关系,无法回退");
- }
-
- // 获取所有正常进行的任务节点 Key,这些任务不能直接使用,需要找出其中需要撤回的任务
- List runTaskList = taskService.createTaskQuery().processInstanceId(task.getProcessInstanceId()).list();
- List runTaskKeyList = new ArrayList<>();
- runTaskList.forEach(item -> runTaskKeyList.add(item.getTaskDefinitionKey()));
- // 需退回任务列表
- List currentIds = new ArrayList<>();
- // 通过父级网关的出口连线,结合 runTaskList 比对,获取需要撤回的任务
- List currentUserTaskList = FlowableUtils.iteratorFindChildUserTasks(target, runTaskKeyList, null, null);
- currentUserTaskList.forEach(item -> currentIds.add(item.getId()));
-
- // 循环获取那些需要被撤回的节点的ID,用来设置驳回原因
- List currentTaskIds = new ArrayList<>();
- currentIds.forEach(currentId -> runTaskList.forEach(runTask -> {
- if (currentId.equals(runTask.getTaskDefinitionKey())) {
- currentTaskIds.add(runTask.getId());
- }
- }));
- identityService.setAuthenticatedUserId(TaskUtils.getUserId());
- // 设置回退意见
- for (String currentTaskId : currentTaskIds) {
- taskService.addComment(currentTaskId, task.getProcessInstanceId(), FlowComment.REBACK.getType(), bo.getComment());
- }
-
- try {
- // 1 对 1 或 多 对 1 情况,currentIds 当前要跳转的节点列表(1或多),targetKey 跳转到的节点(1)
- runtimeService.createChangeActivityStateBuilder()
- .processInstanceId(task.getProcessInstanceId())
- .moveActivityIdsToSingleActivityId(currentIds, bo.getTargetKey()).changeState();
- } catch (FlowableObjectNotFoundException e) {
- throw new RuntimeException("未找到流程实例,流程可能已发生变化");
- } catch (FlowableException e) {
- throw new RuntimeException("无法取消或开始活动");
- }
- // 设置任务节点名称
- bo.setTaskName(task.getName());
- // 处理抄送用户
- if (!copyService.makeCopy(bo)) {
- throw new RuntimeException("抄送任务失败");
- }
- }
-
-
- /**
- * 获取所有可回退的节点
- *
- * @param bo
- * @return
- */
- @Override
- public List findReturnTaskList(WfTaskBo bo) {
- // 当前任务 task
- Task task = taskService.createTaskQuery().taskId(bo.getTaskId()).singleResult();
- // 获取流程定义信息
- ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery().processDefinitionId(task.getProcessDefinitionId()).singleResult();
- // 获取流程模型信息
- BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinition.getId());
- // 查询历史节点实例
- List activityInstanceList = historyService.createHistoricActivityInstanceQuery()
- .processInstanceId(task.getProcessInstanceId())
- .activityType(BpmnXMLConstants.ELEMENT_TASK_USER)
- .finished()
- .orderByHistoricActivityInstanceEndTime().asc()
- .list();
- List activityIdList = activityInstanceList.stream()
- .map(HistoricActivityInstance::getActivityId)
- .filter(activityId -> !StringUtils.equals(activityId, task.getTaskDefinitionKey()))
- .distinct()
- .collect(Collectors.toList());
- // 获取当前任务节点元素
- FlowElement source = ModelUtils.getFlowElementById(bpmnModel, task.getTaskDefinitionKey());
- List elementList = new ArrayList<>();
- for (String activityId : activityIdList) {
- FlowElement target = ModelUtils.getFlowElementById(bpmnModel, activityId);
- boolean isSequential = ModelUtils.isSequentialReachable(source, target, new HashSet<>());
- if (isSequential) {
- elementList.add(target);
- }
- }
- return elementList;
- }
-
- /**
- * 删除任务
- *
- * @param bo 请求实体参数
- */
- @Override
- public void deleteTask(WfTaskBo bo) {
- // todo 待确认删除任务是物理删除任务 还是逻辑删除,让这个任务直接通过?
- identityService.setAuthenticatedUserId(TaskUtils.getUserId());
- taskService.deleteTask(bo.getTaskId(), bo.getComment());
- }
-
- /**
- * 认领/签收任务
- *
- * @param taskBo 请求实体参数
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void claim(WfTaskBo taskBo) {
- Task task = taskService.createTaskQuery().taskId(taskBo.getTaskId()).singleResult();
- if (Objects.isNull(task)) {
- throw new ServiceException("任务不存在");
- }
- taskService.claim(taskBo.getTaskId(), TaskUtils.getUserId());
- }
-
- /**
- * 取消认领/签收任务
- *
- * @param bo 请求实体参数
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void unClaim(WfTaskBo bo) {
- taskService.unclaim(bo.getTaskId());
- }
-
- /**
- * 委派任务
- *
- * @param bo 请求实体参数
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void delegateTask(WfTaskBo bo) {
- // 当前任务 task
- Task task = taskService.createTaskQuery().taskId(bo.getTaskId()).singleResult();
- if (ObjectUtil.isEmpty(task)) {
- throw new ServiceException("获取任务失败!");
- }
- StringBuilder commentBuilder = new StringBuilder(LoginHelper.getNickName())
- .append("->");
- String nickName = sysUserService.selectNickNameById(Long.parseLong(bo.getUserId()));
- if (StringUtils.isNotBlank(nickName)) {
- commentBuilder.append(nickName);
- } else {
- commentBuilder.append(bo.getUserId());
- }
- if (StringUtils.isNotBlank(bo.getComment())) {
- commentBuilder.append(": ").append(bo.getComment());
- }
- identityService.setAuthenticatedUserId(TaskUtils.getUserId());
- // 添加审批意见
- taskService.addComment(bo.getTaskId(), task.getProcessInstanceId(), FlowComment.DELEGATE.getType(), commentBuilder.toString());
- // 设置办理人为当前登录人
- taskService.setOwner(bo.getTaskId(), TaskUtils.getUserId());
- // 执行委派
- taskService.delegateTask(bo.getTaskId(), bo.getUserId());
- // 设置任务节点名称
- bo.setTaskName(task.getName());
- // 处理抄送用户
- if (!copyService.makeCopy(bo)) {
- throw new RuntimeException("抄送任务失败");
- }
- }
-
-
- /**
- * 转办任务
- *
- * @param bo 请求实体参数
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void transferTask(WfTaskBo bo) {
- // 当前任务 task
- Task task = taskService.createTaskQuery().taskId(bo.getTaskId()).singleResult();
- if (ObjectUtil.isEmpty(task)) {
- throw new ServiceException("获取任务失败!");
- }
- StringBuilder commentBuilder = new StringBuilder(LoginHelper.getNickName())
- .append("->");
- String nickName = sysUserService.selectNickNameById(Long.parseLong(bo.getUserId()));
- if (StringUtils.isNotBlank(nickName)) {
- commentBuilder.append(nickName);
- } else {
- commentBuilder.append(bo.getUserId());
- }
- if (StringUtils.isNotBlank(bo.getComment())) {
- commentBuilder.append(": ").append(bo.getComment());
- }
- identityService.setAuthenticatedUserId(TaskUtils.getUserId());
- // 添加审批意见
- taskService.addComment(bo.getTaskId(), task.getProcessInstanceId(), FlowComment.TRANSFER.getType(), commentBuilder.toString());
- // 设置拥有者为当前登录人
- taskService.setOwner(bo.getTaskId(), TaskUtils.getUserId());
- // 转办任务
- taskService.setAssignee(bo.getTaskId(), bo.getUserId());
- // 设置任务节点名称
- bo.setTaskName(task.getName());
- // 处理抄送用户
- if (!copyService.makeCopy(bo)) {
- throw new RuntimeException("抄送任务失败");
- }
- }
-
- /**
- * 取消申请
- *
- * @param bo
- * @return
- */
- @Override
- public void stopProcess(WfTaskBo bo) {
- List taskList = taskService.createTaskQuery().processInstanceId(bo.getProcInsId()).list();
- if (CollectionUtils.isEmpty(taskList)) {
- throw new RuntimeException("流程未启动或已执行完成,取消申请失败");
- }
-
- ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
- .processInstanceId(bo.getProcInsId()).singleResult();
- BpmnModel bpmnModel = repositoryService.getBpmnModel(processInstance.getProcessDefinitionId());
- if (Objects.nonNull(bpmnModel)) {
- Process process = bpmnModel.getMainProcess();
- List endNodes = process.findFlowElementsOfType(EndEvent.class, false);
- if (CollectionUtils.isNotEmpty(endNodes)) {
- Authentication.setAuthenticatedUserId(TaskUtils.getUserId());
- runtimeService.setVariable(processInstance.getId(), ProcessConstants.PROCESS_STATUS_KEY, ProcessStatus.CANCELED.getStatus());
- for (Task task : taskList) {
- taskService.addComment(task.getId(), processInstance.getProcessInstanceId(), FlowComment.STOP.getType(), "取消流程");
- }
- // 获取当前流程最后一个节点
- String endId = endNodes.get(0).getId();
- List executions = runtimeService.createExecutionQuery()
- .parentId(processInstance.getProcessInstanceId()).list();
- List executionIds = new ArrayList<>();
- executions.forEach(execution -> executionIds.add(execution.getId()));
- // 变更流程为已结束状态
- runtimeService.createChangeActivityStateBuilder()
- .moveExecutionsToSingleActivityId(executionIds, endId).changeState();
- }
- }
- }
-
- /**
- * 撤回流程
- *
- * @param taskBo 请求实体参数
- */
- @Override
- @Transactional(rollbackFor = Exception.class)
- public void revokeProcess(WfTaskBo taskBo) {
- String procInsId = taskBo.getProcInsId();
- String taskId = taskBo.getTaskId();
- // 校验流程是否结束
- ProcessInstance processInstance = runtimeService.createProcessInstanceQuery()
- .processInstanceId(procInsId)
- .active()
- .singleResult();
- if(ObjectUtil.isNull(processInstance)) {
- throw new RuntimeException("流程已结束或已挂起,无法执行撤回操作");
- }
- // 获取待撤回任务实例
- HistoricTaskInstance currTaskIns = historyService.createHistoricTaskInstanceQuery()
- .taskId(taskId)
- .taskAssignee(TaskUtils.getUserId())
- .singleResult();
- if (ObjectUtil.isNull(currTaskIns)) {
- throw new RuntimeException("当前任务不存在,无法执行撤回操作");
- }
- // 获取 bpmn 模型
- BpmnModel bpmnModel = repositoryService.getBpmnModel(currTaskIns.getProcessDefinitionId());
- UserTask currUserTask = ModelUtils.getUserTaskByKey(bpmnModel, currTaskIns.getTaskDefinitionKey());
- // 查找下一级用户任务列表
- List nextUserTaskList = ModelUtils.findNextUserTasks(currUserTask);
- List nextUserTaskKeys = nextUserTaskList.stream().map(UserTask::getId).collect(Collectors.toList());
-
- // 获取当前节点之后已完成的流程历史节点
- List finishedTaskInsList = historyService.createHistoricTaskInstanceQuery()
- .processInstanceId(procInsId)
- .taskCreatedAfter(currTaskIns.getEndTime())
- .finished()
- .list();
- for (HistoricTaskInstance finishedTaskInstance : finishedTaskInsList) {
- // 检查已完成流程历史节点是否存在下一级中
- if (CollUtil.contains(nextUserTaskKeys, finishedTaskInstance.getTaskDefinitionKey())) {
- throw new RuntimeException("下一流程已处理,无法执行撤回操作");
- }
- }
- // 获取所有激活的任务节点,找到需要撤回的任务
- List activateTaskList = taskService.createTaskQuery().processInstanceId(procInsId).list();
- List revokeExecutionIds = new ArrayList<>();
- identityService.setAuthenticatedUserId(TaskUtils.getUserId());
- for (Task task : activateTaskList) {
- // 检查激活的任务节点是否存在下一级中,如果存在,则加入到需要撤回的节点
- if (CollUtil.contains(nextUserTaskKeys, task.getTaskDefinitionKey())) {
- // 添加撤回审批信息
- taskService.setAssignee(task.getId(), TaskUtils.getUserId());
- taskService.addComment(task.getId(), task.getProcessInstanceId(), FlowComment.REVOKE.getType(), LoginHelper.getNickName() + "撤回流程审批");
- revokeExecutionIds.add(task.getExecutionId());
- }
- }
- try {
- runtimeService.createChangeActivityStateBuilder()
- .processInstanceId(procInsId)
- .moveExecutionsToSingleActivityId(revokeExecutionIds, currTaskIns.getTaskDefinitionKey()).changeState();
- } catch (FlowableObjectNotFoundException e) {
- throw new RuntimeException("未找到流程实例,流程可能已发生变化");
- } catch (FlowableException e) {
- throw new RuntimeException("执行撤回操作失败");
- }
- }
-
- /**
- * 获取流程过程图
- *
- * @param processId
- * @return
- */
- @Override
- public InputStream diagram(String processId) {
- String processDefinitionId;
- // 获取当前的流程实例
- ProcessInstance processInstance = runtimeService.createProcessInstanceQuery().processInstanceId(processId).singleResult();
- // 如果流程已经结束,则得到结束节点
- if (Objects.isNull(processInstance)) {
- HistoricProcessInstance pi = historyService.createHistoricProcessInstanceQuery().processInstanceId(processId).singleResult();
-
- processDefinitionId = pi.getProcessDefinitionId();
- } else {// 如果流程没有结束,则取当前活动节点
- // 根据流程实例ID获得当前处于活动状态的ActivityId合集
- ProcessInstance pi = runtimeService.createProcessInstanceQuery().processInstanceId(processId).singleResult();
- processDefinitionId = pi.getProcessDefinitionId();
- }
-
- // 获得活动的节点
- List highLightedFlowList = historyService.createHistoricActivityInstanceQuery()
- .processInstanceId(processId).orderByHistoricActivityInstanceStartTime().asc().list();
-
- List highLightedFlows = new ArrayList<>();
- List highLightedNodes = new ArrayList<>();
- //高亮线
- for (HistoricActivityInstance tempActivity : highLightedFlowList) {
- if ("sequenceFlow".equals(tempActivity.getActivityType())) {
- //高亮线
- highLightedFlows.add(tempActivity.getActivityId());
- } else {
- //高亮节点
- highLightedNodes.add(tempActivity.getActivityId());
- }
- }
-
- //获取流程图
- BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId);
- ProcessEngineConfiguration configuration = processEngine.getProcessEngineConfiguration();
- //获取自定义图片生成器
- ProcessDiagramGenerator diagramGenerator = new CustomProcessDiagramGenerator();
- return diagramGenerator.generateDiagram(bpmnModel, "png", highLightedNodes, highLightedFlows, configuration.getActivityFontName(),
- configuration.getLabelFontName(), configuration.getAnnotationFontName(), configuration.getClassLoader(), 1.0, true);
-
- }
-
- /**
- * 获取流程变量
- *
- * @param taskId 任务ID
- * @return 流程变量
- */
- @Override
- public Map getProcessVariables(String taskId) {
- HistoricTaskInstance historicTaskInstance = historyService.createHistoricTaskInstanceQuery()
- .includeProcessVariables()
- .finished()
- .taskId(taskId)
- .singleResult();
- if (Objects.nonNull(historicTaskInstance)) {
- return historicTaskInstance.getProcessVariables();
- }
- return taskService.getVariables(taskId);
- }
-
- /**
- * 启动第一个任务
- * @param processInstance 流程实例
- * @param variables 流程参数
- */
- @Override
- public void startFirstTask(ProcessInstance processInstance, Map variables) {
- // 若第一个用户任务为发起人,则自动完成任务
- List tasks = taskService.createTaskQuery().processInstanceId(processInstance.getProcessInstanceId()).list();
- if (CollUtil.isNotEmpty(tasks)) {
- String userIdStr = (String) variables.get(TaskConstants.PROCESS_INITIATOR);
- identityService.setAuthenticatedUserId(TaskUtils.getUserId());
- for (Task task : tasks) {
- if (StrUtil.equals(task.getAssignee(), userIdStr)) {
- taskService.addComment(task.getId(), processInstance.getProcessInstanceId(), FlowComment.NORMAL.getType(), LoginHelper.getNickName() + "发起流程申请");
- taskService.complete(task.getId(), variables);
- }
- }
- }
- }
-
- /**
- * 指派下一任务审批人
- * @param bpmnModel bpmn模型
- * @param processInsId 流程实例id
- * @param userIds 用户ids
- */
- private void assignNextUsers(BpmnModel bpmnModel, String processInsId, String userIds) {
- // 获取所有节点信息
- List list = taskService.createTaskQuery()
- .processInstanceId(processInsId)
- .list();
- if (list.size() == 0) {
- return;
- }
- Queue assignIds = CollUtil.newLinkedList(userIds.split(","));
- if (list.size() == assignIds.size()) {
- for (Task task : list) {
- taskService.setAssignee(task.getId(), assignIds.poll());
- }
- return;
- }
- // 优先处理非多实例任务
- Iterator iterator = list.iterator();
- while (iterator.hasNext()) {
- Task task = iterator.next();
- if (!ModelUtils.isMultiInstance(bpmnModel, task.getTaskDefinitionKey())) {
- if (!assignIds.isEmpty()) {
- taskService.setAssignee(task.getId(), assignIds.poll());
- }
- iterator.remove();
- }
- }
- // 若存在多实例任务,则进行动态加减签
- if (CollUtil.isNotEmpty(list)) {
- if (assignIds.isEmpty()) {
- // 动态减签
- for (Task task : list) {
- runtimeService.deleteMultiInstanceExecution(task.getExecutionId(), true);
- }
- } else {
- // 动态加签
- for (String assignId : assignIds) {
- Map assignVariables = Collections.singletonMap(BpmnXMLConstants.ATTRIBUTE_TASK_USER_ASSIGNEE, assignId);
- runtimeService.addMultiInstanceExecution(list.get(0).getTaskDefinitionKey(), list.get(0).getProcessInstanceId(), assignVariables);
- }
- }
- }
- }
-}
diff --git a/klp-system/src/main/resources/mapper/workflow/WfCategoryMapper.xml b/klp-system/src/main/resources/mapper/workflow/WfCategoryMapper.xml
deleted file mode 100644
index 76cd26d9..00000000
--- a/klp-system/src/main/resources/mapper/workflow/WfCategoryMapper.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/klp-system/src/main/resources/mapper/workflow/WfCopyMapper.xml b/klp-system/src/main/resources/mapper/workflow/WfCopyMapper.xml
deleted file mode 100644
index 1a1f0d92..00000000
--- a/klp-system/src/main/resources/mapper/workflow/WfCopyMapper.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/klp-system/src/main/resources/mapper/workflow/WfDeployFormMapper.xml b/klp-system/src/main/resources/mapper/workflow/WfDeployFormMapper.xml
deleted file mode 100644
index ad1cb071..00000000
--- a/klp-system/src/main/resources/mapper/workflow/WfDeployFormMapper.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/klp-system/src/main/resources/mapper/workflow/WfFormMapper.xml b/klp-system/src/main/resources/mapper/workflow/WfFormMapper.xml
deleted file mode 100644
index 415b6c69..00000000
--- a/klp-system/src/main/resources/mapper/workflow/WfFormMapper.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/pom.xml b/pom.xml
index f8cf3f6a..87fcb6b1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -321,13 +321,6 @@
${klp-flowable-plus.version}
-
-
- com.klp
- klp-flowable
- ${klp-flowable-plus.version}
-
-
com.klp
@@ -411,7 +404,6 @@
klp-common
klp-demo
klp-extend
- klp-flowable
klp-framework
klp-generator
klp-job