万象EXCEL开发(九)excel 高级混合查询 ——东方仙盟金丹期

"像 Excel 一样简单点击操作 + 像 SQL Server 一样强大 + 防跨表 / 跨用户泄露",设计一套 "零代码配置 + 底层安全过滤" 的方案,核心是把复杂 SQL 逻辑转化为用户能看懂的 "点击选项",同时通过底层机制锁死数据范围。

一、前端可视化操作设计(小白友好)

1. 操作流程:3 步完成统计配置(全鼠标点击,无公式输入)

步骤 1:选择统计目标(预设模板 + 自定义)

  • 左侧模板区 (直接点击即用,覆盖 80% 中小企业需求):
    • 库存类:商品库存统计、分类库存统计、库存预警统计
    • 进销类:每日进销汇总、分类进销对比、供应商进货统计
    • 金额类:进货金额排行、出货金额统计、毛利计算(需配置成本字段)
  • 右侧自定义区 (进阶需求,点击勾选):
    • 统计指标:勾选需要的字段(如 "进货数量""出货金额""库存数量")
    • 计算方式:对选中指标选择 "求和""平均值""最大值"(默认 "求和")

步骤 2:选择分组 / 分类维度(可视化勾选)

  • 下拉选择 "分组依据"(对应 SQL 的GROUP BY):
    • 预设选项:商品名称、商品分类、日期、供应商(选项来自信息表 / 进货表的字段映射)
    • 逻辑:用户选 "商品分类",前端自动关联到param3(无需用户知道字段名)
  • 可选 "二级分组"(如 "日期 + 商品分类"):点击 "添加二级分组",重复上述选择

步骤 3:选择筛选条件(可视化条件配置)

  • 时间筛选:下拉选择 "今日 / 本周 / 本月 / 自定义",自定义时弹出日期选择器(对应 SQL 的WHERE 日期 BETWEEN...
  • 数据范围筛选:勾选 "仅当前文件"(默认勾选,对应realm_sn=当前用户文件SN)、"指定分类"(下拉选择分类名称)
  • 高级筛选:点击 "添加条件",选择字段(如 "进货数量")、条件("大于""小于""等于")、值(输入框 / 下拉选择)

2. 实时预览与保存

  • 配置完成后,点击 "预览结果":前端先通过模拟数据生成表格 / 图表(柱状图 / 折线图可选),用户确认后再提交生成真实 SQL
  • 保存配置:用户可给统计模板命名(如 "1 月分类库存统计"),下次直接调用,无需重复配置

二、底层 SQL 转化与安全控制(防跨表 / 跨用户)

1. 字段映射表:隔离用户操作与实际字段

  • 前端配置与数据库字段的映射关系存在 "字段映射表",用户看不到真实的param1-param30table_sn

    前端显示名称 对应表类型 数据库字段 备注
    商品名称 信息表 param2
    商品分类 信息表 / 进货表 param3 自动关联跨表字段
    进货数量 进货表 param6
    进货金额 进货表 param8
    日期 进货表 / 出货表 paramX 需提前配置日期字段

2. SQL 自动生成规则(避免用户写 SQL)

  • 前端配置转化为 SQL 时,强制加入 "安全过滤条件"(用户无法修改): sql

    复制代码
    -- 强制加入用户隔离条件(用户ID+文件SN)
    WHERE user_id = #{currentUserId}  -- 当前登录用户ID
      AND realm_sn = #{currentRealmSn}  -- 当前操作的文件SN
      AND table_sn IN (#{allowedTableSnList})  -- 允许访问的表SN列表(如进货/出货/信息表)
  • 禁止跨表关联:预设允许的表 SN 列表(如你之前的 3 个表 SN),用户无法选择列表外的表,SQL 中table_sn只能是预设值

3. SQL 注入与权限检测

  • 输入值过滤:用户在筛选条件中输入的内容(如数量、日期),通过参数化查询(#{value})传入 SQL,禁止直接拼接字符串(防注入)
  • 权限校验:生成 SQL 前,后端检测user_id是否有权限访问当前realm_sn的文件,无权限则返回错误
  • 审计日志:记录每一次统计操作的 "用户 ID+SQL 内容 + 操作时间",便于后续排查异常操作

三、关键亮点(适配中小企业需求)

  1. 小白友好:全程鼠标点击,无需懂 SQL、公式、字段名,预设模板覆盖大部分日常需求
  2. 灵活扩展:支持自定义统计指标和分组维度,满足进阶需求
  3. 安全隔离
    • 跨用户隔离:通过user_id确保用户只能访问自己的数据
    • 跨文件隔离:通过realm_sn确保用户只能操作当前文件的表
    • 跨表隔离:通过预设table_sn列表,禁止访问无关表
  4. 复用性强:保存的统计模板可重复调用,也可分享给同文件的其他用户(需权限控制)

四、示例:用户配置 "分类库存统计" 的转化过程

  1. 用户操作:

    • 步骤 1:选模板 "分类库存统计",勾选 "进货数量""出货数量""库存数量"
    • 步骤 2:选分组 "商品分类"
    • 步骤 3:选筛选 "本月""仅当前文件"
  2. 前端转化逻辑:

    • 统计指标对应:进货数量→SUM(CASE WHEN table_sn=进货表 THEN param6 ELSE 0 END)
    • 分组对应:商品分类→GROUP BY param3
    • 筛选对应:本月→paramX BETWEEN 2025-01-01 AND 2025-01-31,仅当前文件→realm_sn=当前SN

阿雪技术观

让我们积极投身于技术共享的浪潮中,不仅仅是作为受益者,更要成为贡献者。无论是分享自己的代码、撰写技术博客,还是参与开源项目的维护和改进,每一个小小的举动都可能成为推动技术进步的巨大力量

Embrace open source and sharing, witness the miracle of technological progress, and enjoy the happy times of humanity! Let's actively join the wave of technology sharing. Not only as beneficiaries, but also as contributors. Whether sharing our own code, writing technical blogs, or participating in the maintenance and improvement of open source projects, every small action may become a huge force driving technological progrss.

相关推荐
文火冰糖的硅基工坊3 小时前
[人工智能-综述-21]:学习人工智能的路径
大数据·人工智能·学习·系统架构·制造
深耕AI应用4 小时前
元表纪基于一个Excel表实现一键发货、打印面单
excel·表格一键发货·自动打印运单·自动打印面单·自动发货
专注VB编程开发20年4 小时前
EXCEL VBA-从X行复制数据插入到Y_Z行
excel·复制数据·vba·插入数据·函数优化
TDengine (老段)7 小时前
TDengine 时序函数 MAVG 用户手册
大数据·数据库·物联网·性能优化·时序数据库·iot·tdengine
小Tomkk7 小时前
一个学校随机点名系统(代excel 自定义导入名字,+随机点名)
excel
58沈剑8 小时前
1W+属性,每秒10W+吞吐,100Y+数据,架构如何设计?(第101讲,万字收藏)
大数据·架构
IT毕设梦工厂9 小时前
大数据毕业设计选题推荐-基于大数据的人口普查收入数据分析与可视化系统-Hadoop-Spark-数据可视化-BigData
大数据·hadoop·数据分析·spark·毕业设计·源码·bigdata
计算机源码社10 小时前
基于Hadoop的车辆二氧化碳排放量分析与可视化系统|基于Spark的车辆排放量实时监控与预测系统|基于数据挖掘的汽车排放源识别与减排策略系统
大数据·hadoop·机器学习·数据挖掘·spark·毕业设计·课程设计
代码匠心13 小时前
从零开始学Flink:数据输出的终极指南
java·大数据·后端·flink