Previous topicNext topic
Help > BS模块 > 通用扫描模块 >
介绍

新一代智能扫描场景编排平台

一扫即达,万物互联


产品定位

ScanPlatform 是 sanMuSoft 平台生态中的智能扫描场景编排引擎。它将传统的"扫描-查询-展示"流程升级为脚本驱动的动态交互体验——同一次扫码,可以根据业务场景呈现完全不同的界面和操作流。无论是仓库盘点、药品追溯、物流签收还是票务验证,一套平台,千面场景。


为什么选择 ScanPlatform

🎯 脚本驱动 UI,场景无限扩展

传统扫描系统:界面写死,改一个按钮就要重新发版。

ScanPlatform:C# 脚本动态生成界面。扫描后的页面布局、按钮、表单、颜色主题全部由脚本实时编排。新增一个业务场景?写一段脚本,即刻生效,无需重新编译前端。

// 一段脚本,就是一个完整场景
return new ScanResponse {
    View = new ViewConfiguration { ViewName = "CardView", Title = "药品信息" },
    Content = Util.UI
        .Alert("药品在有效期内", "success")
        .Text(drugName, "h1")
        .KeyValue(new[] { ... })
        .Form("Dispense", new[] { ... })   // 嵌入出库表单
        .Build()
};

🔄 二次交互,扫描不止于"看"

扫描不是终点,而是业务流程的起点。

ScanPlatform 支持完整的二次交互:用户点击按钮、填写表单、提交确认——所有操作都会触发同一段脚本的二次执行,实现真正的扫描即操作

场景 首次扫描 二次交互
资产盘点 显示资产信息 填写盘点状态 → 更新数据库
药品管理 显示药品详情 输入出库数量 → 扣减库存
物流追踪 显示物流轨迹 确认签收 / 异常上报
票务验证 显示票券信息 确认入场 → 更新票券状态

🗄️ 多数据源,灵活接入

无缝接入 sanMuSoft.Data 数据访问层,支持 **SQLite / SQL Server / MySQL / Oracle / PostgreSQL 五大数据库。

脚本中一键切换数据源:

var asset = await Util.QueryFirstAsync("SELECT * FROM Assets WHERE...", ..., "UserDB");
var order = await Util.QueryFirstAsync("SELECT * FROM Orders WHERE...", ..., "MainDB");

🧩 零实体类,Dictionary 即查即用

无需预先定义实体类,查询结果直接以字典形式返回,字段访问灵活自由:

var drug = await Util.QueryFirstAsync("SELECT * FROM Drugs WHERE DrugCode = @code", ...);
var name = drug["Name"]?.ToString();     // 大小写不敏感
var price = Convert.ToDecimal(drug["Price"] ?? 0);

有实体类时也可使用强类型模式,兼顾灵活性与类型安全。

🎨 丰富组件,所见即所得

内置 20+ 种 UI 组件,通过链式调用快速构建专业界面:

📱 多视图模式,适配不同场景

视图 特点 适用场景
CardView 居中卡片,信息层次清晰 商品详情、资产信息
FullScreenView 沉浸式全屏 票务验证、安检通关
FormView 表单输入为主 盘点确认、数据录入
TableView 多行数据列表 维护记录、库存分布
MessageView 简洁消息提示 操作结果、错误提示

🔒 安全沙箱,放心执行

基于 Roslyn C# Scripting 引擎,脚本在受限沙箱中运行:

📷 全码制支持,一机通扫

支持主流一维码/二维码格式:QR、Code128、Code39、EAN-13、EAN-8、UPC-A、DataMatrix……每个场景可独立配置支持的码制。


典型应用场景

🏭 智能制造 — 资产盘点

扫描资产条码 → 显示资产信息 → 选择盘点状态 → 提交更新 → 查看维护记录。全流程数字化,盘点效率提升 3 倍。

🏥 智慧医疗 — 药品追溯

扫描药品追溯码 → 显示有效期/库存 → 自动过期预警 → 一键出库 → 库存实时扣减。保障用药安全,杜绝过期药品流出。

🛒 零售电商 — 商品查询

扫描商品条码 → 显示价格/促销/库存 → 查看各门店库存分布 → 加入购物车。店员手持设备即可完成全链路操作。

🚚 现代物流 — 签收追踪

扫描快递单号 → 显示完整物流轨迹 → 确认签收 / 异常上报。签收数据实时回传,异常处理留痕可追溯。

🎫 文体场馆 — 票务验证

扫描电子票二维码 → 全屏显示验证结果 → 语音播报座位信息 → 确认入场 → 票券状态更新。入场验证仅需 2 秒。


技术架构

┌─────────────────────────────────────────┐
           前端层 (React 19 + Vite)      
  扫码引擎 ──→ DynamicRenderer ──→ UI    
                                       
  调用 /api/scan/process /api/scan/action
└─────────────────────────────────────────┘
                    
┌─────────────────────────────────────────┐
           服务层 (ASP.NET Core)         
  ScanController ──→ RoslynScriptEngine  
                                       
  CompositeSceneRepository (DB + Memory) 
                                        
  ScriptGlobals: Context + Util          
└─────────────────────────────────────────┘
                    
┌─────────────────────────────────────────┐
           数据层 (sanMuSoft.Data)       
  SQLite / SQL Server / MySQL / Oracle   
  PostgreSQL                             
└─────────────────────────────────────────┘

核心特性一览

特性 说明
脚本引擎 Roslyn C# Scripting,实时编译执行
开发模式 C# 文本脚本 / 编译 DLL / 远程 URL 三种来源
数据访问 Dictionary / 强类型实体 / DataTableHelp 三种方式
数据库支持 SQLite、SQL Server、MySQL、Oracle、PostgreSQL、Access
UI 组件 20+ 内置组件,链式调用构建
视图模板 CardView、FullScreenView、FormView、TableView、MessageView
交互能力 按钮点击、表单提交、二次确认、语音播报
扫描模式 单次 / 连续 / 批量 / 验证
码制支持 QR、Code128、Code39、EAN-13/8、UPC-A、DataMatrix
安全机制 沙箱执行、5秒超时、操作白名单
管理界面 Blazor 管理页面,在线编辑脚本、实时预览

快速上手

第一步:创建场景

在管理页面中新建场景,配置名称、支持的码制、默认视图:

场景ID: asset_inventory
名称: 资产盘点
支持码制: Code128, Code39, QR
默认视图: CardView

第二步:编写脚本

在脚本编辑器中编写 C# 处理逻辑:

// 首次扫描:查询资产信息
var asset = await Util.QueryFirstAsync(
    "SELECT * FROM Assets WHERE AssetNo = @no",
    new { no = Context.Request.BarcodeData }, "UserDB");

// 返回卡片界面 + 盘点表单
return new ScanResponse {
    Content = Util.UI
        .KeyValue(new[] { ... })
        .Form("ConfirmInventory", new[] { ... })
        .Build()
};

第三步:扫码即用

前端打开扫描页面,选择场景,扫码即可看到动态渲染的界面。


与 sanMuSoft 平台深度集成

ScanPlatform 并非孤立产品,而是 sanMuSoft 低代码平台生态的有机组成部分:


结语

ScanPlatform v2.0 让扫描从"读取条码"进化为"驱动业务流程"。

一段脚本,千面场景。一扫即达,万物互联。

扫码,从未如此强大。