certflow.services.cert_numbering module¶
合格证编号与数据生成服务
负责编号模式(自动/手动/复制)和 Certificate 表写入。
- class certflow.services.cert_numbering.CertNumberingService(session)[源代码]¶
基类:
object合格证编号与 Certificate 写入服务
提供三种编号模式 + Certificate 表写入 + Access/CSV 导出。
- 编号模式:
auto_number: 自动编号(正则解析 production_order_no / supply_type,最常用)
manual_number: 手动指定前缀和起始序号
copy_number: 复制已有编号(单件直接复制)
- 持久化:
create_certificates: 将已编号的 SalePlan 写入 Certificate 表
export_to_access: 导出到 Access 数据库
export_sign_tb_csv: 导出 CSV
- 参数:
session (Session)
- auto_number(ids, prefix_override=None)[源代码]¶
自动编号(正则解析 production_order_no / supply_type,最常用)
根据生产令号和供货类型自动判定后缀(L/B/G/Y/XL), 按 sort_group 排序后依次编号,同一批次序列号连续递增。
- manual_number(ids, prefix, start, quantity, suffix='')[源代码]¶
手动编号
手动指定编号前缀、起始序号和数量后缀,为选中的记录生成编号。 只对尚未编号的记录(product_code 为空)进行操作。
- create_certificates(ids, printer_name='', print_status='已打印')[源代码]¶
将已编号的记录写入 Certificate 表
从 SalePlan 表中读取已编号记录,创建对应的 Certificate 记录。 会自动合并 cert_product_name/model/spec 字段(优先使用 cert_ 前缀字段,回退到原始字段)。 同时从产品型号解析公称压力(PN)信息,并标准化口径(DN)。
当
certificate.numbering.timing == "on_import"时,先对未编号记录 自动编号(步骤 6.1),使写入 Certificate 即带编号。certificate_no由组A 服务generate_certificate_no生成合格证号CERT-YYYYMMDD-NNNN``(逐台一个 id,G1);产品编号区间串逐台拆填写入 ``Certificate.product_code_range``(G2)。默认 ``on_demand保持现状 (仅收已编号记录)。合格证按「实际发货台数」逐台生成(BUG-006:合格证数量 = 发货台数总和, 而非销售计划记录数)。一个 SalePlan 的
product_code区间串会展开为 多台 Certificate,每台独立product_code_range/certificate_no/ 审计字段(G5)。