From 513c23efbb1de9569206b9cda3f704e312034563 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Mon, 3 Jan 2022 05:41:05 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=B5=81=E7=A8=8B=E5=AE=9A?= =?UTF-8?q?=E4=B9=89=E7=9A=84=E5=88=86=E9=A1=B5=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProcessDefinitionController.java | 43 ++-- .../BpmProcessDefinitionPageItemRespVO.java | 24 +++ .../vo/BpmProcessDefinitionPageReqVO.java} | 13 +- .../vo/ProcessDefinitionRespVO.java | 36 ++++ .../ProcessDefinitionRespVO.java | 18 -- .../definition/BpmDefinitionConvert.java | 56 +++++ .../workflow/BpmDefinitionConvert.java | 24 --- .../BpmProcessDefinitionMapper.java | 9 + .../definition/BpmDefinitionService.java | 15 +- .../definition/ProcessServiceImpl.java | 2 +- .../impl/BpmDefinitionServiceImpl.java | 65 ++++-- .../{processDefinition.js => definition.js} | 5 +- yudao-admin-ui/src/router/index.js | 10 +- .../src/views/bpm/definition/index.vue | 56 +++++ yudao-admin-ui/src/views/bpm/model/index.vue | 13 +- .../src/views/bpm/model/modelViewer.vue | 41 ---- .../src/views/bpm/processDefinition/index.vue | 192 ------------------ 17 files changed, 280 insertions(+), 342 deletions(-) rename yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/{workflow => definition}/ProcessDefinitionController.java (52%) create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/vo/BpmProcessDefinitionPageItemRespVO.java rename yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/{workflow/vo/processdefinition/ProcessDefinitionPageReqVo.java => definition/vo/BpmProcessDefinitionPageReqVO.java} (56%) create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/vo/ProcessDefinitionRespVO.java delete mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/workflow/vo/processdefinition/ProcessDefinitionRespVO.java create mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/definition/BpmDefinitionConvert.java delete mode 100644 yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/workflow/BpmDefinitionConvert.java rename yudao-admin-ui/src/api/bpm/{processDefinition.js => definition.js} (78%) create mode 100644 yudao-admin-ui/src/views/bpm/definition/index.vue delete mode 100644 yudao-admin-ui/src/views/bpm/model/modelViewer.vue delete mode 100644 yudao-admin-ui/src/views/bpm/processDefinition/index.vue diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/workflow/ProcessDefinitionController.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/ProcessDefinitionController.java similarity index 52% rename from yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/workflow/ProcessDefinitionController.java rename to yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/ProcessDefinitionController.java index c324d4feb..844e78e52 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/workflow/ProcessDefinitionController.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/ProcessDefinitionController.java @@ -1,15 +1,15 @@ -package cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow; +package cn.iocoder.yudao.adminserver.modules.bpm.controller.definition; +import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.BpmProcessDefinitionPageItemRespVO; +import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.BpmProcessDefinitionPageReqVO; import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.FileResp; -import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.processdefinition.ProcessDefinitionPageReqVo; -import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.processdefinition.ProcessDefinitionRespVO; import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmDefinitionService; import cn.iocoder.yudao.framework.common.pojo.CommonResult; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.servlet.ServletUtils; +import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; -import org.activiti.api.process.runtime.ProcessRuntime; -import org.activiti.engine.RepositoryService; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; @@ -19,39 +19,38 @@ import javax.annotation.Resource; import javax.servlet.http.HttpServletResponse; import java.io.IOException; -// TODO @json:swagger 和 validation 的注解,后续要补全下哈。可以等 workflow 基本写的差不多之后 +import static cn.iocoder.yudao.framework.common.pojo.CommonResult.success; + +@Api(tags = "流程定义") @RestController -@RequestMapping("/workflow/process/definition") +@RequestMapping("/bpm/definition") +@Validated public class ProcessDefinitionController { @Resource - private RepositoryService repositoryService; + private BpmDefinitionService bpmDefinitionService; - @Resource - private ProcessRuntime processRuntime; - @Resource - private BpmDefinitionService bpmProcessDefinitionService; + // TODO 芋艿:权限 + @GetMapping ("/page") + @ApiOperation(value = "获得流程定义分页") + public CommonResult> getDefinitionPage(BpmProcessDefinitionPageReqVO pageReqVO) { + return success(bpmDefinitionService.getDefinitionPage(pageReqVO)); + } @GetMapping(value = "/getStartForm") public CommonResult getStartForm(@RequestParam("processKey") String processKey){ // final ProcessDefinition processDefinition = repositoryService.createProcessDefinitionQuery(). // processDefinitionKey(processKey).latestVersion().singleResult(); // processRuntime.processDefinition(processDefinition.getId()).getFormKey(); - //这样查似乎有问题??, 暂时写死 - return CommonResult.success("/flow/leave/apply"); - } - - @GetMapping ("/page") - @ApiOperation(value = "流程定义分页数据") - public CommonResult> pageList(ProcessDefinitionPageReqVo processDefinitionPageReqVo) { - return CommonResult.success(bpmProcessDefinitionService.pageList(processDefinitionPageReqVo)); + // TODO 这样查似乎有问题??, 暂时写死 + return success("/flow/leave/apply"); } @GetMapping ("/export") @ApiOperation(value = "流程定义的bpmnXml导出") - public void pageList(@RequestParam String processDefinitionId, HttpServletResponse response) throws IOException { - FileResp fileResp = bpmProcessDefinitionService.export(processDefinitionId); + public void getDefinitionPage(@RequestParam String processDefinitionId, HttpServletResponse response) throws IOException { + FileResp fileResp = bpmDefinitionService.export(processDefinitionId); ServletUtils.writeAttachment(response, fileResp.getFileName(), fileResp.getFileByte()); } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/vo/BpmProcessDefinitionPageItemRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/vo/BpmProcessDefinitionPageItemRespVO.java new file mode 100644 index 000000000..b18432dfd --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/vo/BpmProcessDefinitionPageItemRespVO.java @@ -0,0 +1,24 @@ +package cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; + +import java.util.Date; + +@ApiModel("流程定义的分页的每一项 Response VO") +@Data +@EqualsAndHashCode(callSuper = true) +@ToString(callSuper = true) +public class BpmProcessDefinitionPageItemRespVO extends ProcessDefinitionRespVO { + + @ApiModelProperty(value = "表单名字", example = "请假表单") + private String formName; + + @ApiModelProperty(value = "部署时间", required = true) + private Date deploymentTime; + + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/workflow/vo/processdefinition/ProcessDefinitionPageReqVo.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/vo/BpmProcessDefinitionPageReqVO.java similarity index 56% rename from yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/workflow/vo/processdefinition/ProcessDefinitionPageReqVo.java rename to yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/vo/BpmProcessDefinitionPageReqVO.java index 4cace516e..e624853c5 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/workflow/vo/processdefinition/ProcessDefinitionPageReqVo.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/vo/BpmProcessDefinitionPageReqVO.java @@ -1,4 +1,4 @@ -package cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.processdefinition; +package cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo; import cn.iocoder.yudao.framework.common.pojo.PageParam; import io.swagger.annotations.ApiModel; @@ -7,14 +7,13 @@ import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; -/** - * @author yunlong.li - */ @Data @ToString(callSuper = true) @EqualsAndHashCode(callSuper = true) @ApiModel("流程定义分页 Request VO") -public class ProcessDefinitionPageReqVo extends PageParam { - @ApiModelProperty("流程名字") - private String name; +public class BpmProcessDefinitionPageReqVO extends PageParam { + + @ApiModelProperty(value = "标识", example = "process1641042089407", notes = "精准匹配") + private String key; + } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/vo/ProcessDefinitionRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/vo/ProcessDefinitionRespVO.java new file mode 100644 index 000000000..90d6a6fcc --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/definition/vo/ProcessDefinitionRespVO.java @@ -0,0 +1,36 @@ +package cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import javax.validation.constraints.NotEmpty; + +@ApiModel("流程定义 Response VO") +@Data +public class ProcessDefinitionRespVO { + + @ApiModelProperty(value = "编号", required = true, example = "1024") + private String id; + + @ApiModelProperty(value = "版本", required = true, example = "1") + private Integer version; + + @ApiModelProperty(value = "流程名称", required = true, example = "芋道") + @NotEmpty(message = "流程名称不能为空") + private String name; + + @ApiModelProperty(value = "流程描述", example = "我是描述") + private String description; + + @ApiModelProperty(value = "流程分类", notes = "参见 bpm_model_category 数据字典", example = "1") + @NotEmpty(message = "流程分类不能为空") + private String category; + + @ApiModelProperty(value = "表单编号", example = "1024") + private Long formId; + + @ApiModelProperty(value = "中断状态", required = true, example = "1", notes = "参见 SuspensionState 枚举") + private Integer suspensionState; + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/workflow/vo/processdefinition/ProcessDefinitionRespVO.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/workflow/vo/processdefinition/ProcessDefinitionRespVO.java deleted file mode 100644 index e9aaade62..000000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/controller/workflow/vo/processdefinition/ProcessDefinitionRespVO.java +++ /dev/null @@ -1,18 +0,0 @@ -package cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.processdefinition; - -import io.swagger.annotations.ApiModel; -import lombok.Data; - -/** - * @author yunlong.li - */ -@Data -@ApiModel("流程定义数据返回 Request VO") -public class ProcessDefinitionRespVO { - - private String formKey; - private String id; - private String key; - private String name; - private Integer version; -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/definition/BpmDefinitionConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/definition/BpmDefinitionConvert.java new file mode 100644 index 000000000..824eaad41 --- /dev/null +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/definition/BpmDefinitionConvert.java @@ -0,0 +1,56 @@ +package cn.iocoder.yudao.adminserver.modules.bpm.convert.definition; + +import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.BpmProcessDefinitionPageItemRespVO; +import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmProcessDefinitionDO; +import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.form.BpmFormDO; +import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.dto.BpmDefinitionCreateReqDTO; +import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; +import org.activiti.engine.repository.Deployment; +import org.activiti.engine.repository.ProcessDefinition; +import org.mapstruct.Mapper; +import org.mapstruct.factory.Mappers; + +import java.util.List; +import java.util.Map; + +/** + * Bpm 流程定义的 Convert + * + * @author yunlong.li + */ +@Mapper +public interface BpmDefinitionConvert { + + BpmDefinitionConvert INSTANCE = Mappers.getMapper(BpmDefinitionConvert.class); + + default List convertList(List list, Map deploymentMap, + Map processDefinitionDOMap, Map formMap) { + return CollectionUtils.convertList(list, definition -> { + Deployment deployment = definition.getDeploymentId() != null ? deploymentMap.get(definition.getDeploymentId()) : null; + BpmProcessDefinitionDO definitionDO = processDefinitionDOMap.get(definition.getId()); + BpmFormDO form = definitionDO != null ? formMap.get(definitionDO.getFormId()) : null; + return convert(definition, deployment, definitionDO, form); + }); + } + + default BpmProcessDefinitionPageItemRespVO convert(ProcessDefinition bean, Deployment deployment, + BpmProcessDefinitionDO processDefinitionDO, BpmFormDO form) { + BpmProcessDefinitionPageItemRespVO respVO = convert(bean); + if (deployment != null) { + respVO.setDeploymentTime(deployment.getDeploymentTime()); + } + if (form != null) { + respVO.setFormId(form.getId()); + respVO.setFormName(form.getName()); + } + if (processDefinitionDO != null) { + respVO.setDescription(processDefinitionDO.getDescription()); + } + return respVO; + } + + BpmProcessDefinitionPageItemRespVO convert(ProcessDefinition bean); + + BpmProcessDefinitionDO convert2(BpmDefinitionCreateReqDTO bean); + +} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/workflow/BpmDefinitionConvert.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/workflow/BpmDefinitionConvert.java deleted file mode 100644 index c3d22ad0b..000000000 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/convert/workflow/BpmDefinitionConvert.java +++ /dev/null @@ -1,24 +0,0 @@ -package cn.iocoder.yudao.adminserver.modules.bpm.convert.workflow; - -import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.processdefinition.ProcessDefinitionRespVO; -import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmProcessDefinitionDO; -import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.dto.BpmDefinitionCreateReqDTO; -import org.activiti.engine.repository.ProcessDefinition; -import org.mapstruct.Mapper; -import org.mapstruct.factory.Mappers; - -/** - * Bpm 流程定义的 Convert - * - * @author yunlong.li - */ -@Mapper -public interface BpmDefinitionConvert { - - BpmDefinitionConvert INSTANCE = Mappers.getMapper(BpmDefinitionConvert.class); - - ProcessDefinitionRespVO convert(ProcessDefinition processDefinition); - - BpmProcessDefinitionDO convert(BpmDefinitionCreateReqDTO bean); - -} diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/dal/mysql/definition/BpmProcessDefinitionMapper.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/dal/mysql/definition/BpmProcessDefinitionMapper.java index d3f517c17..01dd786ad 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/dal/mysql/definition/BpmProcessDefinitionMapper.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/dal/mysql/definition/BpmProcessDefinitionMapper.java @@ -1,9 +1,18 @@ package cn.iocoder.yudao.adminserver.modules.bpm.dal.mysql.definition; import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmProcessDefinitionDO; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import org.apache.ibatis.annotations.Mapper; +import java.util.Collection; +import java.util.List; + @Mapper public interface BpmProcessDefinitionMapper extends BaseMapper { + + default List selectListByProcessDefinitionIds(Collection processDefinitionIds) { + return selectList(new QueryWrapper().in("process_definition_id", processDefinitionIds)); + } + } diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/BpmDefinitionService.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/BpmDefinitionService.java index 9b0394c41..58080ce90 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/BpmDefinitionService.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/BpmDefinitionService.java @@ -1,8 +1,8 @@ package cn.iocoder.yudao.adminserver.modules.bpm.service.definition; +import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.BpmProcessDefinitionPageItemRespVO; import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.FileResp; -import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.processdefinition.ProcessDefinitionPageReqVo; -import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.processdefinition.ProcessDefinitionRespVO; +import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.BpmProcessDefinitionPageReqVO; import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.dto.BpmDefinitionCreateReqDTO; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; @@ -18,21 +18,24 @@ import java.util.Set; * 流程定义接口 * * @author yunlong.li + * @author ZJQ */ public interface BpmDefinitionService { /** - * 流程定义分页 - * @param processDefinitionPageReqVo 分页入参 - * @return 分页model + * 获得流程定义分页 + * + * @param pageReqVO 分页入参 + * @return 流程定义 Page */ - PageResult pageList(ProcessDefinitionPageReqVo processDefinitionPageReqVo); + PageResult getDefinitionPage(BpmProcessDefinitionPageReqVO pageReqVO); /** * 导出流程 bpmn 模型 * @param processDefinitionId 分页入参 * @return 分页model */ + // TODO 芋艿:考虑下重写 FileResp export(String processDefinitionId); /** diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/ProcessServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/ProcessServiceImpl.java index 60e8dbebb..bfa53c06d 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/ProcessServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/ProcessServiceImpl.java @@ -1,6 +1,5 @@ package cn.iocoder.yudao.adminserver.modules.bpm.service.definition; -import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.ProcessService; import lombok.extern.slf4j.Slf4j; import org.activiti.engine.RepositoryService; import org.activiti.engine.repository.Deployment; @@ -14,6 +13,7 @@ import java.io.IOException; import java.io.InputStream; import java.util.List; import java.util.zip.ZipInputStream; + import static cn.iocoder.yudao.adminserver.modules.system.enums.SysErrorCodeConstants.FILE_UPLOAD_FAILED; import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionUtil.exception; diff --git a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/impl/BpmDefinitionServiceImpl.java b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/impl/BpmDefinitionServiceImpl.java index a91fa4d9d..965175a66 100644 --- a/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/impl/BpmDefinitionServiceImpl.java +++ b/yudao-admin-server/src/main/java/cn/iocoder/yudao/adminserver/modules/bpm/service/definition/impl/BpmDefinitionServiceImpl.java @@ -2,16 +2,19 @@ package cn.iocoder.yudao.adminserver.modules.bpm.service.definition.impl; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.StrUtil; +import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.BpmProcessDefinitionPageItemRespVO; +import cn.iocoder.yudao.adminserver.modules.bpm.controller.definition.vo.BpmProcessDefinitionPageReqVO; import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.FileResp; -import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.processdefinition.ProcessDefinitionPageReqVo; -import cn.iocoder.yudao.adminserver.modules.bpm.controller.workflow.vo.processdefinition.ProcessDefinitionRespVO; -import cn.iocoder.yudao.adminserver.modules.bpm.convert.workflow.BpmDefinitionConvert; +import cn.iocoder.yudao.adminserver.modules.bpm.convert.definition.BpmDefinitionConvert; import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.definition.BpmProcessDefinitionDO; +import cn.iocoder.yudao.adminserver.modules.bpm.dal.dataobject.form.BpmFormDO; import cn.iocoder.yudao.adminserver.modules.bpm.dal.mysql.definition.BpmProcessDefinitionMapper; import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.BpmDefinitionService; import cn.iocoder.yudao.adminserver.modules.bpm.service.definition.dto.BpmDefinitionCreateReqDTO; +import cn.iocoder.yudao.adminserver.modules.bpm.service.form.BpmFormService; import cn.iocoder.yudao.framework.common.pojo.PageResult; import cn.iocoder.yudao.framework.common.util.collection.CollectionUtils; +import cn.iocoder.yudao.framework.common.util.object.PageUtils; import lombok.extern.slf4j.Slf4j; import org.activiti.bpmn.converter.BpmnXMLConverter; import org.activiti.bpmn.model.BpmnModel; @@ -24,17 +27,16 @@ import org.springframework.transaction.annotation.Transactional; import org.springframework.validation.annotation.Validated; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; +import java.util.*; + +import static cn.iocoder.yudao.framework.common.util.collection.CollectionUtils.convertList; /** * 流程定义实现 * 主要进行 Activiti {@link ProcessDefinition} 和 {@link Deployment} 的维护 * * @author yunlongn + * @author ZJQ */ @Service @Validated @@ -45,28 +47,51 @@ public class BpmDefinitionServiceImpl implements BpmDefinitionService { @Resource private RepositoryService repositoryService; + @Resource + private BpmFormService bpmFormService; @Resource private BpmProcessDefinitionMapper processDefinitionMapper; @Override - public PageResult pageList(ProcessDefinitionPageReqVo processDefinitionPageReqVo) { - ProcessDefinitionQuery processDefinitionQuery = repositoryService.createProcessDefinitionQuery(); - String likeName = processDefinitionPageReqVo.getName(); - if (StrUtil.isNotBlank(likeName)){ - processDefinitionQuery.processDefinitionNameLike("%"+likeName+"%"); + public PageResult getDefinitionPage(BpmProcessDefinitionPageReqVO pageVO) { + ProcessDefinitionQuery definitionQuery = repositoryService.createProcessDefinitionQuery(); + if (StrUtil.isNotBlank(pageVO.getKey())) { + definitionQuery.processDefinitionKey(pageVO.getKey()); } - List processDefinitions = processDefinitionQuery.orderByProcessDefinitionId().desc() - .listPage((processDefinitionPageReqVo.getPageNo() - 1) * processDefinitionPageReqVo.getPageSize(), - processDefinitionPageReqVo.getPageSize()); - final List respVOList = processDefinitions.stream() - .map(BpmDefinitionConvert.INSTANCE::convert).collect(Collectors.toList()); - return new PageResult<>(respVOList, processDefinitionQuery.count()); + // 执行查询 + List processDefinitions = definitionQuery.orderByProcessDefinitionId().desc() + .listPage(PageUtils.getStart(pageVO), pageVO.getPageSize()); + if (CollUtil.isEmpty(processDefinitions)) { + return new PageResult<>(Collections.emptyList(), definitionQuery.count()); + } + + // 获得 Deployment Map + Set deploymentIds = new HashSet<>(); + processDefinitions.forEach(definition -> CollectionUtils.addIfNotNull(deploymentIds, definition.getDeploymentId())); + Map deploymentMap = getDeploymentMap(deploymentIds); + + // 获得 BpmProcessDefinitionDO Map + List processDefinitionDOs = Collections.emptyList(); + processDefinitionDOs = processDefinitionMapper.selectListByProcessDefinitionIds( + convertList(processDefinitions, ProcessDefinition::getId)); + Map processDefinitionDOMap = CollectionUtils.convertMap(processDefinitionDOs, + BpmProcessDefinitionDO::getProcessDefinitionId); + + // 获得 Form Map + Set formIds = CollectionUtils.convertSet(processDefinitionDOs, BpmProcessDefinitionDO::getFormId); + Map formMap = bpmFormService.getFormMap(formIds); + + // 拼接结果 + long definitionCount = definitionQuery.count(); + return new PageResult<>(BpmDefinitionConvert.INSTANCE.convertList(processDefinitions, deploymentMap, + processDefinitionDOMap, formMap), definitionCount); } @Override public FileResp export(String processDefinitionId) { BpmnModel bpmnModel = repositoryService.getBpmnModel(processDefinitionId); + byte[] bpmnBytes = new BpmnXMLConverter().convertToXML(bpmnModel); FileResp fileResp = new FileResp(); fileResp.setFileName( "export"); @@ -121,7 +146,7 @@ public class BpmDefinitionServiceImpl implements BpmDefinitionService { repositoryService.setProcessDefinitionCategory(definition.getId(), createReqDTO.getCategory()); // 插入拓展表 - BpmProcessDefinitionDO definitionDO = BpmDefinitionConvert.INSTANCE.convert(createReqDTO) + BpmProcessDefinitionDO definitionDO = BpmDefinitionConvert.INSTANCE.convert2(createReqDTO) .setProcessDefinitionId(definition.getId()); processDefinitionMapper.insert(definitionDO); return definition.getId(); diff --git a/yudao-admin-ui/src/api/bpm/processDefinition.js b/yudao-admin-ui/src/api/bpm/definition.js similarity index 78% rename from yudao-admin-ui/src/api/bpm/processDefinition.js rename to yudao-admin-ui/src/api/bpm/definition.js index 5467c707c..ef7bcbd06 100644 --- a/yudao-admin-ui/src/api/bpm/processDefinition.js +++ b/yudao-admin-ui/src/api/bpm/definition.js @@ -1,9 +1,8 @@ import request from '@/utils/request' - -export function page(query) { +export function getDefinitionPage(query) { return request({ - url: '/workflow/process/definition/page', + url: '/bpm/definition/page', method: 'get', params: query }) diff --git a/yudao-admin-ui/src/router/index.js b/yudao-admin-ui/src/router/index.js index 1d4938213..dcac36f4d 100644 --- a/yudao-admin-ui/src/router/index.js +++ b/yudao-admin-ui/src/router/index.js @@ -179,13 +179,13 @@ export const constantRoutes = [ { path: '/bpm', component: Layout, - hidden: true, // TODO 芋艿:未来可删除,暂时作为一个测试页 + hidden: true, children: [ { - path: 'manager/model/view', - component: (resolve) => require(['@/views/bpm/model/modelViewer'], resolve), - name: '流程模型-浏览', - meta: { title: '流程模型-浏览' } + path: 'manager/definition', + component: (resolve) => require(['@/views/bpm/definition/index'], resolve), + name: '流程定义', + meta: { title: '流程定义' } } ] }, diff --git a/yudao-admin-ui/src/views/bpm/definition/index.vue b/yudao-admin-ui/src/views/bpm/definition/index.vue new file mode 100644 index 000000000..3877d673c --- /dev/null +++ b/yudao-admin-ui/src/views/bpm/definition/index.vue @@ -0,0 +1,56 @@ + + + + diff --git a/yudao-admin-ui/src/views/bpm/model/index.vue b/yudao-admin-ui/src/views/bpm/model/index.vue index 78451032b..66cb96c23 100644 --- a/yudao-admin-ui/src/views/bpm/model/index.vue +++ b/yudao-admin-ui/src/views/bpm/model/index.vue @@ -68,8 +68,6 @@ @@ -84,7 +82,7 @@ @@ -244,6 +242,15 @@ export default { this.showBpmnOpen = true }) }, + /** 跳转流程定义的列表 */ + handleDefinitionList(row) { + this.$router.push({ + path:"/bpm/manager/definition", + query:{ + key: row.key + } + }); + } } }; diff --git a/yudao-admin-ui/src/views/bpm/model/modelViewer.vue b/yudao-admin-ui/src/views/bpm/model/modelViewer.vue deleted file mode 100644 index c0aeb27df..000000000 --- a/yudao-admin-ui/src/views/bpm/model/modelViewer.vue +++ /dev/null @@ -1,41 +0,0 @@ - - - - - diff --git a/yudao-admin-ui/src/views/bpm/processDefinition/index.vue b/yudao-admin-ui/src/views/bpm/processDefinition/index.vue deleted file mode 100644 index 7ee34f178..000000000 --- a/yudao-admin-ui/src/views/bpm/processDefinition/index.vue +++ /dev/null @@ -1,192 +0,0 @@ - - - - -