智能一卡通基于统一事件上报,实现门禁、人脸、车牌、梯控等数据汇聚

智能一卡通系统(DAIC-YKT)对接方案

一、方案概述

本方案基于 多奥智能一卡通平台(DAIC-YKT-PT) 的统一事件上报接口(DAIC-YKT-SF),实现门禁、人脸识别、车牌识别、梯控、人行通道闸等子系统的事件数据汇聚与第三方平台对接。

核心理念:一卡 · 一库 · 一脸 · 一网 · 一平台

适用场景:学校、医院、政企、工厂、园区、写字楼、集团公司


二、系统架构

层级组件说明
应用层综合管理平台对接 HIS、BA、HR、MOP、MES、AIoT、ERP 等系统
平台层一卡通核心服务身份认证、权限管理、数据汇聚、API 开放网关
子系统层六大子系统门禁考勤、人脸识别、车牌识别、智能梯控、人行通道闸、卡片管理
设备层终端设备控制器、读卡器、抓拍机、道闸、闸机等

三、统一事件上报接口规范

3.1 接口定义

所有子系统通过统一的接口上报通行事件,字段定义如下:

字段名类型必填说明
deviceNameString设备名称,如"1号楼大厅门禁"
deviceIdString设备唯一标识
areaIdInt所属区域 ID
areaNameString所在区域名称,如"行政楼A区"
evValueInt事件值(状态码)
evNameString事件名称,如"合法卡开门"
userIdInt用户 ID(系统内部编号)
userNoString用户工号/学号
userNameString用户姓名
accessPassportString认证凭证:门禁/梯控为卡号,人脸识别为登记号,车牌识别为车牌号
orgNameString用户所属机构/部门名称
evTimeString事件时间,格式建议 yyyy-MM-dd HH:mm:ss
inOutInt进出方向:1进 / 2出 / 3层(电梯门禁楼层)
accessTypeInt通行类型:1门禁 / 2人脸 / 3车牌识别 / 4梯控
3.2 枚举值说明

inOut(进出方向)

含义适用系统
1门禁、通道闸、车牌
2门禁、通道闸、车牌
3梯控(表示到达楼层)

accessType(通行类型)

含义认证凭证格式
1门禁CPU 卡号 / M1 卡号
2人脸识别人脸登记号(系统分配)
3车牌识别车牌号,如"京A·12345"
4梯控CPU 卡号

四、对接流程

┌─────────────┐     ┌─────────────┐     ┌─────────────┐     ┌─────────────┐
│  终端设备    │────▶│  子系统     │────▶│  一卡通平台  │────▶│  第三方系统  │
│ (门禁/人脸)  │     │  控制器     │     │  API网关    │     │ (HR/ERP等)  │
└─────────────┘     └─────────────┘     └─────────────┘     └─────────────┘
                                              │
                                              ▼
                                        ┌─────────────┐
                                        │  数据库/    │
                                        │  消息队列    │
                                        └─────────────┘

对接步骤:

  1. 网络准备:确保子系统与一卡通平台网络互通,建议采用专线或 VPN

  2. 设备注册:在平台录入设备信息,获取 deviceIdareaId

  3. 用户同步:通过 HR/ERP 系统同步人员基础数据至一卡通平台

  4. 权限下发:平台根据用户角色下发通行权限至各子系统

  5. 事件订阅:第三方系统订阅平台事件推送接口(Webhook 或消息队列)

  6. 数据消费:接收并解析统一事件 JSON,写入业务系统


五、JSON 示例

5.1 门禁刷卡事件

JSON

{
  "deviceName": "1号楼大厅门禁",
  "deviceId": "ACS-001-A",
  "areaId": 1001,
  "areaName": "行政楼A区",
  "evValue": 1,
  "evName": "合法卡开门",
  "userId": 10245,
  "userNo": "EMP2024001",
  "userName": "张三",
  "accessPassport": "A1B2C3D4E5F6",
  "orgName": "信息技术部",
  "evTime": "2026-09-01 08:30:15",
  "inOut": 1,
  "accessType": 1
}
5.2 人脸识别通行事件

JSON

{
  "deviceName": "南门人脸通道",
  "deviceId": "FACE-003-S",
  "areaId": 2003,
  "areaName": "园区南门",
  "evValue": 1,
  "evName": "人脸比对通过",
  "userId": 10245,
  "userNo": "EMP2024001",
  "userName": "张三",
  "accessPassport": "FACE_REG_0010245",
  "orgName": "信息技术部",
  "evTime": "2026-09-01 08:30:20",
  "inOut": 1,
  "accessType": 2
}
5.3 车牌识别事件

JSON

{
  "deviceName": "地下车库入口",
  "deviceId": "LPR-001-B1",
  "areaId": 3001,
  "areaName": "B1层停车场",
  "evValue": 1,
  "evName": "白名单车辆放行",
  "userId": 10245,
  "userNo": "EMP2024001",
  "userName": "张三",
  "accessPassport": "京A·12345",
  "orgName": "信息技术部",
  "evTime": "2026-09-01 08:29:50",
  "inOut": 1,
  "accessType": 3
}
5.4 梯控刷卡事件

JSON

{
  "deviceName": "A座电梯1号梯",
  "deviceId": "ELV-001-A",
  "areaId": 4001,
  "areaName": "A座电梯厅",
  "evValue": 15,
  "evName": "刷卡直达15层",
  "userId": 10245,
  "userNo": "EMP2024001",
  "userName": "张三",
  "accessPassport": "A1B2C3D4E5F6",
  "orgName": "信息技术部",
  "evTime": "2026-09-01 08:30:25",
  "inOut": 3,
  "accessType": 4
}

六、接收端示例代码(Java)

java

@RestController
@RequestMapping("/api/card")
public class AccessEventController {

    @PostMapping("/event")
    public ResponseEntity<String> receiveEvent(@RequestBody AccessEvent event) {
        // 1. 基础校验
        if (event.getDeviceId() == null || event.getAccessPassport() == null) {
            return ResponseEntity.badRequest().body("缺少必要字段");
        }

        // 2. 根据通行类型路由处理
        switch (event.getAccessType()) {
            case 1: // 门禁
                handleAccessControl(event);
                break;
            case 2: // 人脸
                handleFaceRecognition(event);
                break;
            case 3: // 车牌
                handleLicensePlate(event);
                break;
            case 4: // 梯控
                handleElevatorControl(event);
                break;
            default:
                log.warn("未知通行类型: {}", event.getAccessType());
        }

        // 3. 统一记录日志
        log.info("[{}] {} 通过 {} 在 {} {} {}", 
            event.getAccessType() == 1 ? "门禁" : 
            event.getAccessType() == 2 ? "人脸" : 
            event.getAccessType() == 3 ? "车牌" : "梯控",
            event.getUserName(),
            event.getDeviceName(),
            event.getAreaName(),
            event.getInOut() == 1 ? "进入" : event.getInOut() == 2 ? "离开" : "到达" + event.getInOut() + "层",
            event.getEvTime()
        );

        return ResponseEntity.ok("SUCCESS");
    }

    private void handleAccessControl(AccessEvent e) {
        // 考勤联动:写入考勤表
        // 安全联动:触发报警判断
    }

    private void handleFaceRecognition(AccessEvent e) {
        // 人脸库比对日志记录
    }

    private void handleLicensePlate(AccessEvent e) {
        // 停车计费/车位管理联动
    }

    private void handleElevatorControl(AccessEvent e) {
        // 楼层权限审计
    }
}

七、安全与注意事项

项目要求
传输安全事件上报接口必须使用 HTTPS,建议配合 Token 或签名验证
国密卡支持高安全区域须采用 CPU 卡(国密 SM1/SM4 算法),禁止复制
数据一致性用户工号 userNo 须与 HR 系统保持一致,作为跨系统关联键
时区统一evTime 统一采用北京时间(UTC+8),格式标准化
幂等处理接收端需做幂等控制,防止网络重传导致重复记录
异常降级平台与设备断网时,子系统应支持本地脱机运行,恢复后补传

八、扩展建议

  1. 消息队列接入:高并发场景建议通过 Kafka/RabbitMQ 异步消费事件

  2. 实时大屏:基于 evTime 做流式计算,实现园区实时通行态势感知

  3. 考勤联动:门禁/人脸事件直接生成考勤记录,减少重复打卡

  4. 访客系统:临时人员通过人脸/二维码/临时卡授权,过期自动失效

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深圳多奥智能一卡(码、脸)通系统

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值