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

View File

@@ -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<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);
}
@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
public TableDataInfo<WfModelVo> historyList(WfModelBo modelBo, PageQuery pageQuery) {
ModelQuery modelQuery = repositoryService.createModelQuery()

View File

@@ -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() {