下拉框工具搜索引擎【下拉老品牌64xl.com】,基于配置的通用化动态报表平台:提高报表制作效率,降低开发成本

2024-08-15
来源:网络整理

下拉神器是一款专业的下拉词平台,提供各种下拉功能:百度下拉丶360搜索下拉丶必应搜索下拉丶哔哩哔哩下拉丶抖音下拉等等,里面还有批量做词教程技术,可以一次性做10-50个词,省心高效!批量做词,批量出词,可以实现霸屏效果   

有的客户想删除下拉,但是百度不受理,就可以使用批量做词霸屏技术,实现把那些负面信息顶下去,顶掉的效果=删除效果!欢迎您前来使用!新手不懂使用,请多看2遍视频教程哦!下拉神器100%有效果的!   

给大家看一个下拉神器介绍的视频,看完后,点击下面的按钮进入”下拉神器“     

欢迎使用下拉神器,下拉行业老品牌,如果下拉神器都不好使,整个行业其他平台一样不好使,但是大家一定要多学习多看教程,先学会做词出词的技巧!

    




下一篇文章内容预览:


供应链平台

报告

平坦的

动态的

基于配置的泛化

动态报表平台的设计与使用

不会写代码的业务人员不是好的开发人员!

报表作为业务人员随时随地了解业务状况的必备工具,在开发阶段常常存在种类过多、前后端开发繁琐等问题,开发一份报表可能需要花费数个工作日的时间,如何提高报表制作效率、降低开发成本是一个值得探索的问题。

本文提出一种基于配置的通用动态报表平台,可以大大简化前后端报表开发成本,同时提供丰富的组件来生成不同类型、功能的报表,即使没有开发经验的业务人员经过简单的培训也可以快速上手,制作出自己想要的精美报表。

原理概述

我们本着约定优于配置的原则,参考设计理念,以及一处编写,处处使用的思路,设计了基于配置的动态报表平台。

首先用户在权限系统中认证权限后,前端配置的特殊SQL语句和各种查询组件会传递到后端进行存储,用户点击对应的报表后,前端会解析之前配置的组件信息并动态生成(文本框、下拉选择框、日期选择框等)。当在控件中输入对应的查询条件后,后端会根据报表代码读取之前的配置项,解析相关语法并映射对应字段,通过动态执行SQL语句的方式将对应的报表信息展示到前端。

如何使用

配置动态报告

要配置和使用自定义动态报告,您需要执行以下四个步骤:

编写自定义报告所需的 SQL 语句。

下拉选框是什么意思_选框下拉输入内容的快捷键_如何输入下拉框选的内容

为 SQL 中的某些字段设置别名 - 例如:“出库订单号”。

将条件转换为动态报告特定的语法。

扩展动态报表的元数据(元数据是指前端的查询组件)。

编写自定义报告所需的 SQL 语句

按你的需要来写。

例子:

select sku_id,created_time,entry_order_typefrom t1 where t1.entry_order_type = ?and t1.sku_id = ?and created_time >= ?and created_time <= ?

为 SQL 中的某些字段设置别名

为前面编写的SQL的查询字段设置自定义别名如何输入下拉框选的内容,这些别名将会成为报告页面的页眉,如下图所示:

select sku_id as 'skuId',created_time as '创建时间',entry_order_type as '单据类型'from t1 where t1.entry_order_type = ?and t1.sku_id = ?and created_time >= ?and created_time <= ?

将条件转换为动态报告特定语法

为了实现这一点,的值由前端组件动态生成并按顺序显示:

我们可以把上面的SQL语句改造如下:

select sku_id as 'skuId',created_time as '创建时间',entry_order_type as '单据类型'from t1 where 1=1 <@if selectSingle_1??> and t1.entry_order_type = ${comp.selectSingle_1_单据类型}if><@if inputText_2??> and t1.sku_id = ${comp.inputText_2_skuId}if><@if dateRange_3??> and t1.created_time >= ${comp.dateRange_3_创建时间} and t1.created_time <= ${comp.dateRange_3_创建时间} if>

上面这条语句的意思是:如果参数不为空,那么条件=传递的参数值。

这是一种固定的写法,用来表示如果满足XXX条件,那么就使用这条语句。comp.是查询条件组件的一种特殊语法,一般写法如下:

comp.组件名_序号[_别名]

comp.提供了组件提示功能,可以快速调出各种定义的常用组件,如下图:

以_分隔,表示需要在前端显示的组件名称及显示顺序。

${}用于从前端组件获取值。

动态报表平台的组成部分如下:

如何输入下拉框选的内容_下拉选框是什么意思_选框下拉输入内容的快捷键

持续更新中...

扩展动态报告的元数据

如果您想对动态报表做更多的扩展,欢迎查看我们的扩展内容。

元数据扩展是对动态报表的补充,是常规之外的各类组件的额外配置,具体配置内容如下:

{ "selectors": { "组件名": { "mandatory": false, // 是否必填,默认false "label": "选项", // 查询组件展示名 "defaultValue": "", // 默认值 "displayAll": true, // 是否全选,默认true "rangeLimit": 30, // 时间默认区间,默认1天 "defaultRange": 10, // 默认展示时间区间 "options": [{ // options配置下拉选默认值,是一种手动设置下拉框枚举值的方法 "label": "全部", "value": "" }, { "label": "初始状态", "value": "0" }, { "label": "部分分配", "value": "10" } ], "apiOptions": { // apiOptions 配置下拉选取值接口,是一种通过接口调用获取下拉框的枚举值的方法 "url": "/XX/XX", "method": "get", "params": { "enumName": "WmsOutBoundTypeEnum" }, "label": "typeDesc",// 下拉选kv转换,默认typeDesc "value": "typeCode" // 下拉选kv转换,默认typeCode } } }}

演示

SQL 语句

select sku_id as 'skuId',created_time as '创建时间',entry_order_type as '单据类型'from t1 where 1=1 <@if selectSingle_1??> and t1.entry_order_type = ${comp.selectSingle_1_单据类型}if><@if inputText_2??> and t1.sku_id = ${comp.inputText_2_skuId}if><@if dateRange_3??> and t1.created_time >= ${comp.dateRange_3_创建时间} and t1.created_time <= ${comp.dateRange_3_创建时间} if>

元数据配置

{ "selectors": { "selectSingle_2": { "apiOptions": { "url": "/XX/XX", "method": "get", "params": { "enumName": "WmsOutBoundTypeEnum" } } } }}

页面展示效果

高级功能

扩展动态报表远程数据采集模式

目前的动态报表依赖于SQL,但有些报表过于复杂,需要通过程序处理才能达到更好的效果。

因此设计了一种远程数据获取方式提供支持,即在“报表开发”中配置查询条件,配置远程API即可获取报表所需的数据,后端只需做简单的兼容适配即可。

SQL 模块配置

由于报表内容不需要通过编写SQL语句来动态获取,而是通过调用API来获取,因此SQL模块只需要简单定义需要在前端展现的组件即可,例如:

${comp.inputText_1_任务ID}${comp.inputText_2_SKUID}${comp.inputText_3_失败原因}${comp.selectSingleReceivedType_4_收货状态}${comp.selectMultiWarehouseCode_5_仓库}

元数据模块配置

选框下拉输入内容的快捷键_如何输入下拉框选的内容_下拉选框是什么意思

这里需要额外定义一个模块来调用API获取报表数据,传给后端的输入参数由前端将SQL模块拼接成JSON格式生成。

{ "selectors": {}, "datasource": { "remote": true, "apiOptions": { "url": "http://ip:端口号/XX", "method": "post" }, "exportApiOptions": { "url": "http://ip:端口号/XX", "type": "wms" //附加定义:用来导出对应业务渠道的报表 } }}

后端兼容性

协议:

使用 POST 请求

具体输入参数

具体输出参数

// 入参DEMO@Datapublic class DynamicRequest { private Integer pageNum; private Integer pageSize; // {"inputText_1":"Nike SB", "inputText_2":"9527"} // Map可以替换为合适的Pojo对象 private Map params;}// 出参demo@Datapublic class DynamicPagingObject<T> extends PagingObject<T> { // [{"prop":"skuName", "label":"商品名称"}, {"prop":"color", "label":"颜色"}] private List tableTitle;}

报表扩展深入功能

当您需要将一个报告中的字段值与另一个报告的内容关联起来时,您可以在元数据中添加以下设置。

元数据定义

"linkedColumns": [ { "type": "newWindow", //关联报表打开形式(newWindow表示在新窗口中打开) "columnName": "交接单号", //关联映射的字段名称 "dataCode": "XXX",//关联报表编号 "params": [ { "label": "inputText_1", //关联报表的组件名 "index": "交接单号" //关联报表的字段索引 } ] } ]

效果演示

点击某项交接单号后,该交接单号会转到另外一个新报表页面,点击查询后可以查到新报表的数据:

总结

动态报表解决了供应链平台90%以上的报表开发需求如何输入下拉框选的内容,同时已有约20份动态报表投入上线使用,大大减少了前后端的开发工作量。原本前后端共同开发一份报表需要2-3天时间,而有了动态报表,一个人只需要几个小时甚至更少的时间就可以完成。

此外下拉框工具搜索引擎【下拉老品牌64xl.com】,基于配置的通用化动态报表平台:提高报表制作效率,降低开发成本,通过向一些仓库数据分析师讲解和推广动态报表的使用,也让非研发技术人员参与到动态报表的开发中来。未来的动态报表还有一些需要改进的地方,比如不正确的SQL执行错误的前端日志提示、大报表的多线程查询优化等。

文丨小薇迪&蓝天

分享