feat(流程模型): 新增流程模型导出数据功能
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
|
||||
/**
|
||||
* 查询流程模型列表
|
||||
*/
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user