一、产品概述

卷宗智能流转柜是面向法院、检察院、公安司法机关的智慧司法物联网终端设备,聚焦案件卷宗、诉讼档案、执法案卷的存储、交接、流转、归档全场景,彻底替代传统人工登记、人工交接、人工盘点的低效管理模式。设备依托物联网、RFID射频识别、生物识别、数据溯源技术,搭建起“集中存放、智能存取、闭环流转、全程留痕、无人值守”的标准化卷宗管理体系,实现纸质卷宗与电子办案数据的双向同步、状态互通,解决传统卷宗管理中找卷难、登记错、交接乱、溯源难、安全性弱等行业痛点,全面提升司法卷宗管理的规范化、智能化、合规化水平。

该设备深度对接司法办案系统,适配案件立案、审理、移送、归档、借阅、归还等全业务流程,支持多部门、多人员跨时段卷宗交接,所有操作全程日志留存、不可篡改,完全契合司法档案合规管理要求,目前已广泛应用于检察案管中心、法院档案库房、公安执法办案中心等场景。

二、聚澜智能卷宗智能流转柜核心功能与技术优势

2.1 核心功能

  • 唯一身份绑定:为每一份卷宗粘贴专属RFID电子标签,生成卷宗“数字身份证”,绑定案号、案件类型、承办人、卷宗页数、存放时间等全维度信息,支持标签读写、信息更新、状态追踪。

  • 智能权限管控:采用“人脸识别+系统权限”双重验证机制,基于司法人员岗位、办案权限分级分配柜格操作权限,精准限制操作人员可存取的卷宗范围,杜绝错拿、私拿、误取问题。

  • 全自动流转管理:实现卷宗入库登记、智能分配柜格、自助存取、借阅审批、归还归档、超期预警全流程自动化,无需人工干预,大幅缩短卷宗交接时长。

  • 批量智能盘点:依托RFID批量读取特性,无需逐份翻阅,可穿透卷宗堆叠层批量识别柜内所有卷宗,自动比对台账数据,生成盘点报表,精准排查遗失、错放卷宗。

  • 全程溯源留痕:所有存卷、取卷、借阅、归还、异常操作实时记录,生成不可篡改的操作日志,包含操作人、操作时间、卷宗信息、设备编号、操作IP等数据,满足司法审计溯源需求。

  • 远程监控预警:云端管理平台实时监控设备运行状态、柜格占用情况、卷宗流转状态,针对超期未还、非法开门、设备故障等异常场景自动弹窗预警、消息推送。

2.2 核心技术架构

卷宗智能流转柜采用硬件终端+嵌入式软件+云端管理平台三层架构,各层级协同联动,保障系统稳定高效运行:

  • 硬件层:采用高强度冷轧钢板柜体,具备防火、防锈、防撞击特性;搭载10.1寸工业触控屏、人脸识别模块、RFID读写器、红外感应检测模块、智能电子锁、温湿度传感器,支持7×24小时稳定运行。

  • 软件层:嵌入式控制系统负责设备驱动、身份校验、柜锁控制、RFID数据采集;业务系统实现权限管理、流转流程管控、数据统计分析;接口模块完成与司法办案系统的数据对接同步。

  • 云端层:物联网云端平台实现设备远程管理、数据存储、日志留存、预警推送、多终端数据同步,支持管理人员远程查看设备状态、卷宗流转数据。

2.3 技术优势

  • RFID技术优势:相比传统二维码、条形码,具备穿透读取、批量识别、抗污染、可重复读写特性,无需直视识别,单次可识别数十份卷宗,适配堆叠存放场景。

  • 安全合规优势:双重身份认证+分级权限管控+不可篡改日志,构建全流程安全防护体系,符合司法档案保密、合规管理规范。

  • 高效流转优势:实现“数据跑代替人工跑”,卷宗调阅响应速度提升70%以上,审批流转时长大幅压缩,极大提升办案效率。

三、聚澜智能卷宗智能流转柜核心业务流转流程

3.1 卷宗入库流程

操作人员身份验证登录→RFID扫描卷宗绑定案件信息→系统智能分配空闲柜格→自动解锁对应柜格→操作人员存放卷宗、关闭柜门→红外感应确认存放完成→系统自动更新卷宗状态为“在柜”、记录入库日志→同步数据至办案系统。

3.2 卷宗借阅取出流程

承办人提交借阅申请→管理员线上审批→承办人人脸识别验证→系统匹配权限解锁对应卷宗柜格→取出卷宗、关闭柜门→RFID识别确认卷宗出库→系统更新状态为“借阅中”、留存操作记录→超期自动预警提醒。

3.3 卷宗归还归档流程

操作人员身份验证登录→选择归还卷宗→RFID扫描核验卷宗信息→系统匹配原存放柜格并解锁→存放卷宗、闭合柜门→设备自动盘点核验→更新卷宗状态为“已归档”→生成归还记录、同步归档数据。

四、聚澜智能卷宗智能流转柜核心技术代码实现

本文提供Python后端核心代码,包含设备连接、RFID数据解析、身份校验、柜锁控制、卷宗流转状态管理、日志留存核心功能,适配嵌入式终端与云端后台对接场景,代码简洁可落地、可直接二次开发。

4.1 开发环境

开发语言:Python3.8+;核心依赖:pyserial(串口通信)、opencv-python(人脸识别)、requests(接口对接)、pycryptodome(数据加密)

# 安装依赖命令
# pip install pyserial opencv-python requests pycryptodome

4.2 全局配置与工具类

import serial
import cv2
import requests
import time
import json
from datetime import datetime
from Crypto.Cipher import AES
from Crypto.Util.Padding import pad

# 全局设备配置
DEVICE_SERIAL_PORT = "/dev/ttyUSB0"  # 设备串口
BAUD_RATE = 9600  # 波特率
CLOUD_API_URL = "http://127.0.0.1:8080/judge/file/api"  # 云端接口地址
AES_KEY = b"1234567890123456"  # 加密密钥

# 卷宗状态枚举
FILE_STATUS = {
    "IN_CABINET": 0,    # 在柜
    "BORROW": 1,        # 借阅中
    "RETURN": 2,        # 已归还
    "LOST": 3           # 遗失异常
}

# 操作日志工具
def save_operate_log(operator, file_id, operate_type, cabinet_no):
    """保存不可篡改操作日志"""
    log_data = {
        "operator": operator,
        "file_id": file_id,
        "operate_type": operate_type,
        "cabinet_no": cabinet_no,
        "operate_time": datetime.now().strftime("%Y-%m-%d %H:%M:%S"),
        "device_code": "CABINET_202608001"
    }
    # 本地日志存储
    with open("cabinet_log.json", "a", encoding="utf-8") as f:
        f.write(json.dumps(log_data, ensure_ascii=False) + "\n")
    # 同步云端日志
    try:
        requests.post(f"{CLOUD_API_URL}/log/save", json=log_data, timeout=3)
    except Exception as e:
        print("日志同步失败:", str(e))
    return log_data

4.3 人脸识别身份校验模块

class FaceAuth:
    """人脸识别权限校验"""
    def __init__(self):
        # 加载官方人脸分类器
        self.face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")
        # 预存司法人员白名单人脸特征(实际项目对接云端人脸库)
        self.allow_user = ["admin", "judge001", "procurator001"]

    def face_detect(self):
        """人脸检测与身份验证"""
        cap = cv2.VideoCapture(0)
        auth_result = False
        user_id = None
        start_time = time.time()

        while time.time() - start_time < 10:  # 10秒超时
            ret, frame = cap.read()
            if not ret:
                break
            gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
            faces = self.face_cascade.detectMultiScale(gray, 1.3, 5)

            # 模拟人脸比对(实际项目替换为云端人脸比对接口)
            if len(faces) > 0:
                user_id = "judge001"  # 识别成功返回用户ID
                if user_id in self.allow_user:
                    auth_result = True
                    break

            cv2.imshow("Face Auth", frame)
            if cv2.waitKey(1) & 0xFF == ord("q"):
                break

        cap.release()
        cv2.destroyAllWindows()
        return auth_result, user_id

4.4 RFID卷宗识别与数据解析模块

class RfidReader:
    """RFID标签读取与卷宗信息解析"""
    def __init__(self):
        self.ser = None
        self.open_serial()

    def open_serial(self):
        """打开串口连接RFID设备"""
        try:
            self.ser = serial.Serial(DEVICE_SERIAL_PORT, BAUD_RATE, timeout=1)
            print("RFID设备连接成功")
            return True
        except Exception as e:
            print("RFID设备连接失败:", str(e))
            return False

    def read_file_rfid(self):
        """读取卷宗RFID标签信息"""
        if not self.ser or not self.ser.is_open:
            self.open_serial()
        # 发送读取指令
        self.ser.write(bytes.fromhex("01 03 00 00 00 01 94 0B"))
        time.sleep(0.2)
        recv_data = self.ser.readall()
        if len(recv_data) < 8:
            return None
        # 解析RFID数据(提取卷宗唯一ID)
        file_id = recv_data.hex()[4:16]
        # 调取云端卷宗详情
        file_info = self.get_file_info(file_id)
        return file_info

    def get_file_info(self, file_id):
        """从办案系统获取卷宗详情"""
        try:
            res = requests.get(f"{CLOUD_API_URL}/file/info?fileId={file_id}", timeout=3)
            return res.json() if res.status_code == 200 else None
        except Exception as e:
            print("卷宗信息获取失败:", str(e))
            return None

4.5 智能柜格控制核心模块

class CabinetControl:
    """智能柜锁控制、柜格分配、状态检测"""
    def __init__(self):
        self.ser = None
        self.open_cabinet_serial()
        # 柜格状态:0-空闲 1-占用
        self.cabinet_status = {f"G{i:02d}":0 for i in range(1, 31)}

    def open_cabinet_serial(self):
        """打开控制柜串口"""
        try:
            self.ser = serial.Serial(DEVICE_SERIAL_PORT, BAUD_RATE, timeout=1)
            print("柜体控制模块连接成功")
            return True
        except Exception as e:
            print("柜体连接失败:", str(e))
            return False

    def get_free_cabinet(self):
        """智能分配空闲柜格"""
        for cab_no, status in self.cabinet_status.items():
            if status == 0:
                return cab_no
        return None

    def unlock_cabinet(self, cab_no):
        """解锁指定柜格"""
        if not self.ser or not self.ser.is_open:
            self.open_cabinet_serial()
        # 拼接解锁指令
        unlock_cmd = f"OPEN_{cab_no}".encode("utf-8")
        self.ser.write(unlock_cmd)
        time.sleep(0.5)
        # 更新柜格状态
        self.cabinet_status[cab_no] = 1
        print(f"柜格{cab_no}解锁成功")
        return True

    def close_detect(self, cab_no):
        """红外检测柜门关闭,更新卷宗状态"""
        # 模拟红外检测(实际读取硬件传感器数据)
        time.sleep(1)
        self.cabinet_status[cab_no] = 1
        return True

4.6 卷宗流转核心业务逻辑

class FileCirculation:
    """卷宗流转核心业务:入库、借阅、归还"""
    def __init__(self):
        self.face_auth = FaceAuth()
        self.rfid = RfidReader()
        self.cabinet = CabinetControl()

    def file_in_storage(self):
        """卷宗入库业务"""
        # 1.身份校验
        auth_res, user = self.face_auth.face_detect()
        if not auth_res:
            return {"code":403, "msg":"身份验证失败,禁止操作"}
        
        # 2.读取卷宗信息
        file_info = self.rfid.read_file_rfid()
        if not file_info:
            return {"code":400, "msg":"卷宗信息读取失败"}
        file_id = file_info.get("fileId")

        # 3.分配柜格并解锁
        cab_no = self.cabinet.get_free_cabinet()
        if not cab_no:
            return {"code":500, "msg":"暂无空闲柜格"}
        self.cabinet.unlock_cabinet(cab_no)

        # 4.检测入库完成,留存日志
        self.cabinet.close_detect(cab_no)
        log = save_operate_log(user, file_id, "卷宗入库", cab_no)
        
        # 5.同步云端状态
        requests.post(f"{CLOUD_API_URL}/file/status", json={
            "fileId": file_id,
            "status": FILE_STATUS["IN_CABINET"],
            "cabinetNo": cab_no
        })
        return {"code":200, "msg":"入库成功", "data":{"fileId":file_id, "cabinetNo":cab_no}}

    def file_borrow(self):
        """卷宗借阅出库"""
        auth_res, user = self.face_auth.face_detect()
        if not auth_res:
            return {"code":403, "msg":"身份验证失败"}
        
        file_info = self.rfid.read_file_rfid()
        if not file_info:
            return {"code":400, "msg":"卷宗读取失败"}
        file_id = file_info.get("fileId")
        cab_no = file_info.get("cabinetNo")

        # 解锁柜格、更新状态
        self.cabinet.unlock_cabinet(cab_no)
        self.cabinet.close_detect(cab_no)
        save_operate_log(user, file_id, "卷宗借阅出库", cab_no)

        # 同步借阅状态
        requests.post(f"{CLOUD_API_URL}/file/status", json={
            "fileId": file_id,
            "status": FILE_STATUS["BORROW"],
            "cabinetNo": ""
        })
        return {"code":200, "msg":"借阅成功", "data":{"fileId":file_id}}

    def file_return(self):
        """卷宗归还归档"""
        auth_res, user = self.face_auth.face_detect()
        if not auth_res:
            return {"code":403, "msg":"身份验证失败"}
        
        file_info = self.rfid.read_file_rfid()
        if not file_info:
            return {"code":400, "msg":"卷宗读取失败"}
        file_id = file_info.get("fileId")
        cab_no = file_info.get("cabinetNo")

        self.cabinet.unlock_cabinet(cab_no)
        self.cabinet.close_detect(cab_no)
        save_operate_log(user, file_id, "卷宗归还归档", cab_no)

        # 同步归档状态
        requests.post(f"{CLOUD_API_URL}/file/status", json={
            "fileId": file_id,
            "status": FILE_STATUS["RETURN"],
            "cabinetNo": cab_no
        })
        return {"code":200, "msg":"归档成功", "data":{"fileId":file_id}}

# 程序入口
if __name__ == "__main__":
    circulation = FileCirculation()
    # 测试入库
    print(circulation.file_in_storage())
    # 测试借阅
    # print(circulation.file_borrow())
    # 测试归还
    # print(circulation.file_return())

五、聚澜智能卷宗智能流转柜代码功能说明与扩展方案

5.1 核心代码功能

上述代码实现了卷宗智能流转柜最核心的业务闭环,包含人员身份安全校验、RFID卷宗识别、智能柜格分配、电子锁控制、卷宗状态流转、操作日志存证、云端数据同步七大核心能力,完全匹配司法卷宗日常流转业务需求,代码轻量化、运行稳定,适配嵌入式终端部署。

5.2 二次开发扩展方向

  • 增加超期预警模块,定时检测借阅卷宗时长,自动推送逾期提醒;

  • 接入批量盘点功能,实现全柜RFID批量扫描、自动对账、异常卷宗筛查;

  • 集成温湿度监测,适配纸质卷宗防潮、防尘存储需求;

  • 对接司法统一办案平台,实现审批流程线上化、数据全打通;

  • 增加数据加密与防篡改机制,进一步提升司法数据安全性。

六、总结

聚澜智能卷宗智能流转柜依托物联网与智能识别技术,重构了司法卷宗管理模式,解决了传统人工管理的效率低、安全性差、溯源难等痛点,实现了卷宗流转的标准化、智能化、合规化管控。本文介绍的设备功能、技术架构贴合实际落地场景,配套核心代码可直接用于项目开发、设备调试与系统二次开发,能够快速赋能智慧司法数字化改革,助力司法档案管理提质增效。

更多推荐