From dafd6cdbf45b195150dcce382783f93787b30a74 Mon Sep 17 00:00:00 2001 From: konbai <1527468660@qq.com> Date: Sat, 15 Oct 2022 16:13:18 +0800 Subject: [PATCH] =?UTF-8?q?feat(=E6=B5=81=E7=A8=8B=E6=A8=A1=E5=9E=8B):=20?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=B5=81=E7=A8=8B=E6=A8=A1=E5=9E=8B=E5=AF=BC?= =?UTF-8?q?=E5=87=BA=E6=95=B0=E6=8D=AE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../workflow/WfModelController.java | 28 +++++++++ .../workflow/domain/vo/WfModelExportVo.java | 59 +++++++++++++++++++ .../ruoyi/workflow/domain/vo/WfModelVo.java | 14 ----- .../workflow/service/IWfModelService.java | 6 ++ .../service/impl/WfModelServiceImpl.java | 34 +++++++++++ ruoyi-ui/src/views/workflow/model/index.vue | 13 +--- 6 files changed, 130 insertions(+), 24 deletions(-) create mode 100644 ruoyi-system/src/main/java/com/ruoyi/workflow/domain/vo/WfModelExportVo.java diff --git a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/WfModelController.java b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/WfModelController.java index 78947bea..53dbe2fc 100644 --- a/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/WfModelController.java +++ b/ruoyi-admin/src/main/java/com/ruoyi/web/controller/workflow/WfModelController.java @@ -1,6 +1,7 @@ package com.ruoyi.web.controller.workflow; import cn.dev33.satoken.annotation.SaCheckPermission; +import cn.hutool.core.bean.BeanUtil; import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.core.controller.BaseController; @@ -10,17 +11,26 @@ import com.ruoyi.common.core.page.TableDataInfo; import com.ruoyi.common.core.validate.AddGroup; import com.ruoyi.common.core.validate.EditGroup; import com.ruoyi.common.enums.BusinessType; +import com.ruoyi.common.utils.poi.ExcelUtil; +import com.ruoyi.workflow.domain.bo.WfCategoryBo; import com.ruoyi.workflow.domain.bo.WfModelBo; +import com.ruoyi.workflow.domain.vo.WfCategoryVo; +import com.ruoyi.workflow.domain.vo.WfModelExportVo; import com.ruoyi.workflow.domain.vo.WfModelVo; +import com.ruoyi.workflow.service.IWfCategoryService; import com.ruoyi.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; /** * 工作流流程模型管理 @@ -35,6 +45,7 @@ import java.util.Arrays; public class WfModelController extends BaseController { private final IWfModelService modelService; + private final IWfCategoryService categoryService; /** * 查询流程模型列表 @@ -156,4 +167,21 @@ public class WfModelController extends BaseController { 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 WfCategoryBo()); + 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/ruoyi-system/src/main/java/com/ruoyi/workflow/domain/vo/WfModelExportVo.java b/ruoyi-system/src/main/java/com/ruoyi/workflow/domain/vo/WfModelExportVo.java new file mode 100644 index 00000000..2e6fedc0 --- /dev/null +++ b/ruoyi-system/src/main/java/com/ruoyi/workflow/domain/vo/WfModelExportVo.java @@ -0,0 +1,59 @@ +package com.ruoyi.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/ruoyi-system/src/main/java/com/ruoyi/workflow/domain/vo/WfModelVo.java b/ruoyi-system/src/main/java/com/ruoyi/workflow/domain/vo/WfModelVo.java index 9fc67deb..2c4df847 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/workflow/domain/vo/WfModelVo.java +++ b/ruoyi-system/src/main/java/com/ruoyi/workflow/domain/vo/WfModelVo.java @@ -1,7 +1,5 @@ package com.ruoyi.workflow.domain.vo; -import com.alibaba.excel.annotation.ExcelIgnoreUnannotated; -import com.alibaba.excel.annotation.ExcelProperty; import lombok.Data; import java.util.Date; @@ -13,61 +11,49 @@ import java.util.Date; * @createTime 2022/6/21 9:16 */ @Data -@ExcelIgnoreUnannotated public class WfModelVo { /** * 模型ID */ - @ExcelProperty(value = "模型ID") private String modelId; /** * 模型名称 */ - @ExcelProperty(value = "模型名称") private String modelName; /** * 模型Key */ - @ExcelProperty(value = "模型Key") private String modelKey; /** * 分类编码 */ - @ExcelProperty(value = "分类编码") private String category; /** * 版本 */ - @ExcelProperty(value = "版本") private Integer version; /** * 表单类型 */ - @ExcelProperty(value = "表单类型") private Integer formType; /** * 表单ID */ - @ExcelProperty(value = "表单ID") private Long formId; /** * 模型描述 */ - @ExcelProperty(value = "模型描述") private String description; /** * 创建时间 */ - @ExcelProperty(value = "创建时间") private Date createTime; /** * 流程xml */ - @ExcelProperty(value = "流程xml") private String bpmnXml; /** * 表单内容 */ - @ExcelProperty(value = "表单内容") private String content; } diff --git a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IWfModelService.java b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IWfModelService.java index 363ee7cd..b7a9187e 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IWfModelService.java +++ b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/IWfModelService.java @@ -6,6 +6,7 @@ import com.ruoyi.workflow.domain.bo.WfModelBo; import com.ruoyi.workflow.domain.vo.WfModelVo; import java.util.Collection; +import java.util.List; /** * @author KonBAI @@ -18,6 +19,11 @@ public interface IWfModelService { */ TableDataInfo list(WfModelBo modelBo, PageQuery pageQuery); + /** + * 查询流程模型列表 + */ + List list(WfModelBo modelBo); + /** * 查询流程模型列表 */ diff --git a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfModelServiceImpl.java b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfModelServiceImpl.java index 17b0086f..cd7f7e90 100644 --- a/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfModelServiceImpl.java +++ b/ruoyi-system/src/main/java/com/ruoyi/workflow/service/impl/WfModelServiceImpl.java @@ -88,6 +88,40 @@ public class WfModelServiceImpl extends FlowServiceFactory implements IWfModelSe 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() diff --git a/ruoyi-ui/src/views/workflow/model/index.vue b/ruoyi-ui/src/views/workflow/model/index.vue index 75eb59b8..f1083f28 100644 --- a/ruoyi-ui/src/views/workflow/model/index.vue +++ b/ruoyi-ui/src/views/workflow/model/index.vue @@ -606,16 +606,9 @@ export default { }, /** 导出按钮操作 */ handleExport() { - const queryParams = this.queryParams; - this.$confirm('是否确认导出所有流程定义数据项?', "警告", { - confirmButtonText: "确定", - cancelButtonText: "取消", - type: "warning" - }).then(function() { - return exportDeployment(queryParams); - }).then(response => { - this.download(response.msg); - }) + this.download('workflow/model/export', { + ...this.queryParams + }, `wf_model_${new Date().getTime()}.xlsx`) }, /** 导入bpmn.xml文件 */ handleImport() {