当前位置: 首页 > news >正文

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

核心调整:把 “模板” 从 “固定统计结果” 改为 “可配置的字段 / 逻辑组件”,开发人员能通过后台配置基础规则,普通用户能自由组合这些组件做完统计,既保留 Excel 的灵活性,又避免写代码。

一、核心设计:分层配置体系(开发设置层 + 用户操作层)

1. 制作调整层(后台可视化设置,无需写代码)

开发人员经过后台配置 “统计所需的基础元素”,为普通用户提供可操控的 “积木块”,配置项包括:

(1)字段配置(映射数据库字段,用户看不到真实 param)

配置项说明示例配置
字段标识后台用的唯一 ID(如goods_namegoods_name
前端显示名普通用户看到的名称(如 “商品名称”)“商品名称”
关联表 SN该字段所属的表(可多选,适配跨表字段)信息表 SN、进货表 SN
数据库真实字段对应param1-param30中的某一个信息表.param2、进货表.param2
字段类型文本 / 数字 / 日期(用于前端适配输入框 / 选择器)文本
是否可统计勾选后该字段可用于 “求和 / 平均值” 等计算(仅数字类型可勾)否(商品名称不可统计)

(2)统计规则配置(定义用户可选择的计算逻辑)

开发人员配置用户能用到的统计方式,避免用户接触复杂函数:

  • 预设计算类型:求和、平均值、最大值、最小值、计数(仅数字 / 日期类型协助)
  • 自定义计算规则(进阶):比如配置 “库存 = 进货 - 出货”,后台预定义SUM(进货量)-SUM(出货量)的逻辑,前端显示为 “库存数量” 选项

(3)数据范围配置(锁死安全边界,开发提前配置)

  • 固定过滤条件:配置user_id=当前用户realm_sn=当前文件为默认不可修改的条件
  • 允许访问的表 SN 列表:配备用户可操作的表(如你的 3 个表 SN),禁止访问其他表
  • 字段权限控制:配置哪些用户组能看到哪些字段(如普通用户看不到 “供应商 ID”)

2. 普通用户操作层(前台自由组合,全点击管理)

用户基于开发调整好的 “积木块”,自由组合统计需求,流程如下:

步骤 1:拖拽 / 勾选 “统计指标”(对应 SQL 的 SELECT)

  • 左侧 “可选字段” 区:显现开发调整好的前端字段名(如 “商品名称”“进货数量”“出货数量”)
  • 用户操作:
    • 想统计 “进货数量总和”:勾选 “进货数量”,选择计算方式 “求和”(默认)
    • 想统计 “库存”:直接勾选开发配置好的 “库存数量”(后台自动对应SUM(进)-SUM(出)
  • 效果:用户无需懂公式,选字段 + 选计算方式,就对应了 SQL 中的SUM(CASE...)

步骤 2:选择 “分组维度”(对应 SQL 的 GROUP BY)

  • 右侧 “分组字段” 区:显示可用于分组的字段(研发配置时标记 “可分组” 的字段,如 “商品分类”“日期”)
  • 用户操作:点击 “添加分组”,下拉选择 “商品分类”(前端自动对应GROUP BY param3
  • 支持多级分组:再点击 “添加分组” 选 “日期”,就对应GROUP BY param3, 日期字段

步骤 3:配置 “筛选条件”(对应 SQL 的 WHERE)

  • 下方 “筛选条件” 区:
    • 字段选择:下拉选要筛选的字段(如 “日期”“进货数量”)
    • 条件选择:下拉选 “大于”“等于”“介于”(根据字段类型自动匹配可选条件,日期类型显示 “介于”,文本类型显示 “包含”)
    • 值输入:根据字段类型显示输入框 / 日期选择器(如日期字段表明日历,数字字段只允许输入数字)
  • 用户操作:选 “日期”→“介于”→选开始 / 结束日期,就对应WHERE 日期 BETWEEN ...

步骤 4:预览与保存(配置逻辑而非固定模板)

  • 点击 “预览”:前端根据配置生成临时结果(用模拟数据或真实数据),用户确认后提交
  • 保存为 “自定义配置”:用户给当前配置命名(如 “我的 1 月分类进销统计”),下次可直接调用,也可分享给同权限用户

二、底层 SQL 转化逻辑(开发配置驱动,用户无感知)

以用户配置 “统计商品分类的进货求和、出货求和、库存,筛选 1 月内容” 为例:

  1. 编写配置的映射关系(后台存储):

    • 商品分类:关联表 SN = 信息表 / 进货表,真实字段 = param3
    • 进货数量:关联表 SN = 进货表,真实字段 = param6,计算方式 = 求和
    • 出货数量:关联表 SN = 出货表,真实字段 = param6,计算方式 = 求和
    • 库存数量:预定义逻辑 = SUM (进货表.param6)-SUM (出货表.param6)
    • 日期:关联表 SN = 进货表 / 出货表,真实字段 = param4
  2. 用户配置转化为 SQL 的过程:

    • 统计指标→SELECT:根据字段配置自动生成CASE WHENSUM
    • 分组维度→GROUP BY:根据分组字段对应的真实字段生成
    • 筛选条件→WHERE:拼接用户选择的条件,加上开发配置的固定过滤条件(user_id、realm_sn、允许的 table_sn)
  3. 最终生成的 SQL(用户不可见):

sql

SELECT-- 商品分类(开发配置的分组字段)COALESCE(MAX(CASE WHEN table_sn='信息表SN' THEN param3 END), '未知分类') AS 商品分类,-- 进货数量求和(用户选的字段+计算方式)SUM(CASE WHEN table_sn='进货表SN' THEN param6 ELSE 0 END) AS 进货数量,-- 出货数量求和(用户选的字段+计算方式)SUM(CASE WHEN table_sn='出货表SN' THEN param6 ELSE 0 END) AS 出货数量,-- 库存数量(开发配置的预定义逻辑)(SUM(CASE WHEN table_sn='进货表SN' THEN param6 ELSE 0 END) - SUM(CASE WHEN table_sn='出货表SN' THEN param6 ELSE 0 END)) AS 库存数量
FROM cwvector_fairyallience_exceltable_common_records
WHERE-- 开发配置的固定安全条件(用户不可修改)user_id = #{currentUserId}AND realm_sn = #{currentRealmSn}AND table_sn IN ('进货表SN','出货表SN','信息表SN')-- 用户配置的筛选条件(1月数据)AND (table_sn NOT IN ('进货表SN','出货表SN') OR param4 BETWEEN '2025-01-01' AND '2025-01-31')
GROUP BY param3  -- 商品分类对应的真实字段
ORDER BY 商品分类;

三、关键优势(满足 “灵活 + 可控 + 可配置”)

  1. 保留 Excel 的灵活性:用户不是用固定模板,而是像在 Excel 中 “选字段、设条件、做汇总” 一样自由组合,避免功能僵化。
  2. 创建配置无需写代码:开发人员通过后台可视化配置字段、规则、权限,不用每次新增统计需求都改代码。
  3. 安全边界可控
    • 数据隔离:固定user_idrealm_sn,用户看不到其他数据。
    • 表权限:只允许访问配置好的表 SN,防止跨表查询。
    • 注入防护:用户输入的筛选值通过参数化查询传入,避免 SQL 注入。
  4. 兼顾不同用户
    • 普通用户:全点击操作,无需懂 SQL / 公式。
    • 编写 / 管理员:通过设置扩展字段和规则,支撑更多统计场景。

四、开发配置后台的核心界面(简化版)

  1. 字段配置页
    • 表格展示已配置字段,支持 “新增 / 编辑 / 删除”。
    • 新增字段时:下拉选关联表 SN、输入前端显示名、选择真实 param 字段、勾选 “可统计 / 可分组”。
  2. 规则配置页
    • 新增 “自定义计算规则”:输入规则名称(如 “库存数量”),选择关联的基础字段(进货数量、出货数量),选择计算逻辑(减法)。
  3. 权限配置页
    • 按用户组配置可访问的字段和表 SN,勾选 “允许配备模板” 的用户组(如管理员)可保存公共配置供其他用户使用。

这套方案既避免了 “固定模板限制灵活性” 的问题,又通过开发配置层构建了对底层逻辑和安全边界的控制,同时让普通用户能像用 Excel 一样自由处理,开发人员也能通过配置快速扩展特性,完全匹配你 “不是做模板、而是做灵活统计设备” 的初衷

阿雪技术观


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

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.

http://www.hskmm.com/?act=detail&tid=35601

相关文章:

  • 2025年10月无缝钢管推荐榜:五强对比评测与采购指南
  • 中国项目管理工具市场迎来技术驱动新纪元:Gitee引领双核协作革命
  • za3J5cHRvc+WvhueggeWOn+aWhw
  • 结对项目:小学四则运算题目的命令行程序
  • uploads-lab通关攻略
  • 中国企业DevOps工具链选型指南:政务、出海与跨国协作的实战解析
  • 初始化vue3项目和打包vue3项目
  • Continuation Passing Style 连续传递样式
  • Gitee DevOps:中国企业的研发效能加速器
  • PCB布线一定不能走直角吗?一个或许有些离经叛道又颠覆常识的答案
  • 邮件大附件怎么发送的有效方案与技巧分享
  • 软件测试-缺陷管理篇
  • 数据安全交换系统介绍及其应用场景分析
  • 后端学习笔记
  • LabVIEW继电保护检测 - 教程
  • DBeaver 设置语言为中文
  • 什么是文件摆渡系统?全面解析企业数据安全交换的核心工具
  • Gitee崛起:中国开发者生态的战略升级与未来布局
  • Docker Compose v2.35.1 更新!
  • 飞驰云联亮相军工数字化转型发展峰会 共筑军工数字生态新范式
  • 国内开发者如何选择最适合的代码管理工具?Gitee、GitHub、Bitbucket横向评测
  • 2025国产ITSM厂商选型指南:聚焦五大ITSM平台,赋能企业数字化运维
  • 2025年10月留香沐浴露对比榜:蓝蕨经典香型与四款热门香型横评
  • 2025 最新土工膜生产厂家推荐榜权威发布:聚焦 50 年寿命与 28MPa 强度,涵盖防渗 / HDPE / 复合等全品类标杆企业
  • 2025 年土工布生产厂家最新推荐榜权威发布:聚焦 3 万平厂房与 50 年寿命产品,优选实力品牌
  • 如何在linux驱动程序保存文件
  • 2025年10月留香沐浴露排行:蓝蕨等五款香水级体验评测
  • 2025年10月防脱生发产品推荐榜:十款临床验证口碑对比
  • 2025 年国内优质不锈钢厂家最新推荐排行榜:含沈阳/东三省区域及水箱油罐等产品优质服务商楼梯/激光切割/桥梁杆/真空罐/扶手不锈钢厂家推荐
  • 2025 顶管源头厂家最新推荐榜单:F 型混凝土 / 水泥 / 电力 / 矩形 / 市政排水大口径优质供应商精选