# 惠州-制单 **Repository Path**: x421/huizhou---document-making ## Basic Information - **Project Name**: 惠州-制单 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-06 - **Last Updated**: 2026-07-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 凭证扫描制证看板 这是一个简单部署版的 HTML + SQLite 小后端程序。 ## 启动 在当前目录执行: ```bash python3 server.py ``` 然后浏览器打开: ```text http://127.0.0.1:8000 ``` Windows 可双击: ```text start_win7.bat ``` 如果已经打包成 EXE,可直接双击: ```text VoucherScanApp.exe ``` EXE 行为: 1. 如果后端没有运行,会自动启动后端并打开浏览器。 2. 如果后端已经运行,会直接打开 `http://127.0.0.1:8000`。 3. `data.db` 会放在 EXE 同目录。 数据库文件会自动创建在: ```text data.db ``` ## 页面流程 1. 扫描枪扫描二维码或条形码,或手工输入流水号后按回车。 - 二维码示例:`XW;202604700229;20152012;13610430315;1600.00;18|35900269039` - 条形码示例:`202604700229` - 系统会从二维码第 2 段提取流水号。 2. 系统根据流水号第 7 位识别凭证类型: - `1`:学生薪酬 - `7`:校外劳务 - `4`:校内工薪 3. 弹窗输入附件数。 4. 保存后状态为 `pending`,等待 RPA 处理。 5. 展示区默认读取当天数据;当天没有数据时,自动展示前天数据。 6. 可以在展示区按流水号搜索,搜索结果不受日期限制。 7. 扫描已存在的流水号时,如果状态为制证成功且已有凭证号,会弹出凭证号并自动关闭;如果数据库没有该流水号,则进入附件数录入。 8. 页面顶部会显示当前数据库里全部待处理记录数量。 ## RPA 接口 读取待处理记录: ```http GET http://127.0.0.1:8000/api/rpa/pending?limit=50 ``` 回写成功: ```http POST http://127.0.0.1:8000/api/rpa/result Content-Type: application/json { "id": 1, "status": "success", "voucher_no": "记-2026-0001" } ``` 回写失败: ```http POST http://127.0.0.1:8000/api/rpa/result Content-Type: application/json { "id": 1, "status": "failed", "error_message": "制证失败原因" } ``` 也可以用 `serial_no` 代替 `id` 回写。 ## Win7 离线部署建议 推荐用“文件夹 + Python 3.8 + 浏览器”的方式部署,不需要安装任何 Python 第三方库。 准备一台有网络的电脑,提前下载并拷到 U 盘: 1. Python 3.8.x Windows 安装包。Win7 建议用 Python 3.8 系列,安装时勾选 `Add Python to PATH`。 2. Chrome 离线安装包,或其他支持现代 HTML 的浏览器。不建议用 IE。 3. 整个 `voucher_scan_app` 文件夹。 到 Win7 离线电脑后: 1. 安装 Python 3.8.x。 2. 安装 Chrome。 3. 把 `voucher_scan_app` 文件夹复制到固定目录,例如 `D:\voucher_scan_app`。 4. 双击 `start_win7.bat`。 5. 浏览器打开 `http://127.0.0.1:8000`。 如果 RPA 和页面都在这台电脑上,RPA 可以直接访问: ```text http://127.0.0.1:8000/api/rpa/pending?limit=50 http://127.0.0.1:8000/api/rpa/result ``` 数据文件是同目录下的 `data.db`。备份时复制这个文件即可。 ## 打包 EXE Windows EXE 需要在 Windows 电脑上打包。准备好 Python 3.8 和 PyInstaller 后,在 `voucher_scan_app` 目录双击: ```text build_exe_win7.bat ``` 生成文件: ```text dist\VoucherScanApp.exe ``` 离线 Win7 最终只需要拷贝: ```text VoucherScanApp.exe ``` 如果已有旧数据,还要把旧的 `data.db` 放在 EXE 同目录。 ## RPA SQLite 脚本 如果 RPA 和 `data.db` 在同一台电脑上,也可以不走 HTTP 接口,直接用 Python 标准库 `sqlite3` 读取和回写。 把 `rpa_sqlite.py` 放在 `VoucherScanApp.exe` 同目录,默认会读取同目录的 `data.db`。 读取待处理记录: ```bat python rpa_sqlite.py pending --limit 50 ``` 指定数据库路径读取: ```bat python rpa_sqlite.py --db D:\voucher_scan_app\data.db pending --limit 50 ``` 按流水号回写成功: ```bat python rpa_sqlite.py result --serial-no 202604700229 --status success --voucher-no 记-2026-0001 ``` 按流水号回写失败: ```bat python rpa_sqlite.py result --serial-no 202604700229 --status failed --error-message 制证失败原因 ``` 脚本输出为 JSON。`status` 只允许 `success` 或 `failed`,不会写入 `processing`。 ## 网页启动 RPA 页面顶部提供 `RPA 设置` 按钮,点击后在弹窗中配置并启动 RPA。可配置: - `ShadowBot.exe` 路径,例如 `C:\Program Files\ShadowBot\ShadowBot.exe` - `.shr` 路径,例如 `E:\RPA\建行对账-集美.shr` 配置会保存到 EXE 同目录的 `rpa_config.json`。在弹窗中点击 `启动 RPA` 时,程序会在 EXE 同目录生成 `run_rpa.bat`,内容类似: ```bat ShadowBot.exe --mode=robot --app-file="E:\RPA\建行对账-集美.shr" taskkill /F /IM ShadowBot.Shell.exe ``` 安全限制:RPA 程序文件名必须是 `ShadowBot.exe`,应用文件必须是 `.shr`。