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