feat(流程模型): 新增流程模型导出数据功能

This commit is contained in:
konbai
2022-10-15 16:13:18 +08:00
parent a137f8d4fb
commit dafd6cdbf4
6 changed files with 130 additions and 24 deletions

View File

@@ -1,6 +1,7 @@
package com.ruoyi.web.controller.workflow; package com.ruoyi.web.controller.workflow;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.hutool.core.bean.BeanUtil;
import com.ruoyi.common.annotation.Log; import com.ruoyi.common.annotation.Log;
import com.ruoyi.common.annotation.RepeatSubmit; import com.ruoyi.common.annotation.RepeatSubmit;
import com.ruoyi.common.core.controller.BaseController; 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.AddGroup;
import com.ruoyi.common.core.validate.EditGroup; import com.ruoyi.common.core.validate.EditGroup;
import com.ruoyi.common.enums.BusinessType; 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.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.domain.vo.WfModelVo;
import com.ruoyi.workflow.service.IWfCategoryService;
import com.ruoyi.workflow.service.IWfModelService; import com.ruoyi.workflow.service.IWfModelService;
import lombok.RequiredArgsConstructor; import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.validation.annotation.Validated; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import javax.servlet.http.HttpServletResponse;
import javax.validation.constraints.NotEmpty; import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.Arrays; 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 { public class WfModelController extends BaseController {
private final IWfModelService modelService; private final IWfModelService modelService;
private final IWfCategoryService categoryService;
/** /**
* 查询流程模型列表 * 查询流程模型列表
@@ -156,4 +167,21 @@ public class WfModelController extends BaseController {
return toAjax(modelService.deployModel(modelId)); return toAjax(modelService.deployModel(modelId));
} }
/**
* 导出流程模型数据
*/
@Log(title = "导出流程模型数据", businessType = BusinessType.EXPORT)
@SaCheckPermission("workflow:model:export")
@PostMapping("/export")
public void export(WfModelBo modelBo, HttpServletResponse response) {
List<WfModelVo> list = modelService.list(modelBo);
List<WfModelExportVo> listVo = BeanUtil.copyToList(list, WfModelExportVo.class);
List<WfCategoryVo> categoryVos = categoryService.queryList(new WfCategoryBo());
Map<String, String> categoryMap = categoryVos.stream()
.collect(Collectors.toMap(WfCategoryVo::getCode, WfCategoryVo::getCategoryName));
for (WfModelExportVo exportVo : listVo) {
exportVo.setCategoryName(categoryMap.get(exportVo.getCategory()));
}
ExcelUtil.exportExcel(listVo, "流程模型数据", WfModelExportVo.class, response);
}
} }

View File

@@ -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;
}

View File

@@ -1,7 +1,5 @@
package com.ruoyi.workflow.domain.vo; package com.ruoyi.workflow.domain.vo;
import com.alibaba.excel.annotation.ExcelIgnoreUnannotated;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data; import lombok.Data;
import java.util.Date; import java.util.Date;
@@ -13,61 +11,49 @@ import java.util.Date;
* @createTime 2022/6/21 9:16 * @createTime 2022/6/21 9:16
*/ */
@Data @Data
@ExcelIgnoreUnannotated
public class WfModelVo { public class WfModelVo {
/** /**
* 模型ID * 模型ID
*/ */
@ExcelProperty(value = "模型ID")
private String modelId; private String modelId;
/** /**
* 模型名称 * 模型名称
*/ */
@ExcelProperty(value = "模型名称")
private String modelName; private String modelName;
/** /**
* 模型Key * 模型Key
*/ */
@ExcelProperty(value = "模型Key")
private String modelKey; private String modelKey;
/** /**
* 分类编码 * 分类编码
*/ */
@ExcelProperty(value = "分类编码")
private String category; private String category;
/** /**
* 版本 * 版本
*/ */
@ExcelProperty(value = "版本")
private Integer version; private Integer version;
/** /**
* 表单类型 * 表单类型
*/ */
@ExcelProperty(value = "表单类型")
private Integer formType; private Integer formType;
/** /**
* 表单ID * 表单ID
*/ */
@ExcelProperty(value = "表单ID")
private Long formId; private Long formId;
/** /**
* 模型描述 * 模型描述
*/ */
@ExcelProperty(value = "模型描述")
private String description; private String description;
/** /**
* 创建时间 * 创建时间
*/ */
@ExcelProperty(value = "创建时间")
private Date createTime; private Date createTime;
/** /**
* 流程xml * 流程xml
*/ */
@ExcelProperty(value = "流程xml")
private String bpmnXml; private String bpmnXml;
/** /**
* 表单内容 * 表单内容
*/ */
@ExcelProperty(value = "表单内容")
private String content; private String content;
} }

View File

@@ -6,6 +6,7 @@ import com.ruoyi.workflow.domain.bo.WfModelBo;
import com.ruoyi.workflow.domain.vo.WfModelVo; import com.ruoyi.workflow.domain.vo.WfModelVo;
import java.util.Collection; import java.util.Collection;
import java.util.List;
/** /**
* @author KonBAI * @author KonBAI
@@ -18,6 +19,11 @@ public interface IWfModelService {
*/ */
TableDataInfo<WfModelVo> list(WfModelBo modelBo, PageQuery pageQuery); TableDataInfo<WfModelVo> list(WfModelBo modelBo, PageQuery pageQuery);
/**
* 查询流程模型列表
*/
List<WfModelVo> list(WfModelBo modelBo);
/** /**
* 查询流程模型列表 * 查询流程模型列表
*/ */

View File

@@ -88,6 +88,40 @@ public class WfModelServiceImpl extends FlowServiceFactory implements IWfModelSe
return TableDataInfo.build(page); return TableDataInfo.build(page);
} }
@Override
public List<WfModelVo> 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<Model> modelList = modelQuery.list();
List<WfModelVo> 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 @Override
public TableDataInfo<WfModelVo> historyList(WfModelBo modelBo, PageQuery pageQuery) { public TableDataInfo<WfModelVo> historyList(WfModelBo modelBo, PageQuery pageQuery) {
ModelQuery modelQuery = repositoryService.createModelQuery() ModelQuery modelQuery = repositoryService.createModelQuery()

View File

@@ -606,16 +606,9 @@ export default {
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
const queryParams = this.queryParams; this.download('workflow/model/export', {
this.$confirm('是否确认导出所有流程定义数据项?', "警告", { ...this.queryParams
confirmButtonText: "确定", }, `wf_model_${new Date().getTime()}.xlsx`)
cancelButtonText: "取消",
type: "warning"
}).then(function() {
return exportDeployment(queryParams);
}).then(response => {
this.download(response.msg);
})
}, },
/** 导入bpmn.xml文件 */ /** 导入bpmn.xml文件 */
handleImport() { handleImport() {