certflow.controllers.certificate_controller module¶
合格证控制器模块
处理合格证的生成、打印、刻印标记及统计查询等业务逻辑. 支持批量操作和按产品型号分组打印.
- class certflow.controllers.certificate_controller.CertificateController(db_session=None, db_manager=None)[源代码]¶
-
合格证控制器 - 处理合格证打印、刻印等业务
提供合格证的生成、批量打印、刻印标记、状态查询及统计等功能. 支持按产品型号分组打印,自动处理合格证编号生成和打印日志记录.
- 参数:
db_session (Session | None)
db_manager (Any)
- certificate_cache¶
合格证编号缓存字典,用于避免重复生成编号
- generate_certificates_for_sale_plans(sale_plan_ids, force_regenerate=False)[源代码]¶
为销售计划批量生成合格证
遍历指定的销售计划ID列表,为每条销售计划生成对应的合格证记录. 当force_regenerate为True时,即使合格证已存在也会重新生成.
- 参数:
- 返回:
- 生成结果字典,包含以下键:
total: 处理总数
generated: 成功生成数
failed: 失败数
certificates: 生成的合格证对象列表
- 返回类型:
示例
>>> controller = CertificateController() >>> result = controller.generate_certificates_for_sale_plans([1, 2, 3]) >>> print(f"生成成功: {result['generated']}/{result['total']}")
- get_history_last_values(model)[源代码]¶
取同型号上次实际打印值(供统一护栏 ④ diff 闸)。
收口 print_view 原先直连
HistoryBackfillService(self.session)的写法, 视图层不再直接持有 Service,统一经 Controller 访问。
- batch_print_certificates(certificate_ids, printer_name='Default Printer', copies=1)[源代码]¶
批量打印合格证(相同产品会分组打印)
按产品型号对合格证进行分组,逐组执行打印操作, 并为每张合格证记录打印日志.
- 参数:
- 返回:
- 打印结果字典,包含以下键:
total: 总处理数
success: 成功数
failed: 失败数
groups: 各产品组的打印详情列表
logs: 打印日志列表
- 返回类型:
示例
>>> controller = CertificateController() >>> result = controller.batch_print_certificates([1, 2, 3], "HP LaserJet", 2) >>> print(f"打印成功: {result['success']}/{result['total']}")
- get_certificate_by_unique_key(unique_key)[源代码]¶
按 unique_key 取最新合格证(收口 print_view 原直连 CertificateService)。
- render_certificate_bytes(config, data, copies=1, x_offsets=None, printer_name=None)[源代码]¶
渲染合格证 ESC/P-K 原始字节(仅预览/落盘,不真正出纸)。
收口 print_view 原直连
PrinterService.render_certificate_bytes的写法, 视图层不再直接持有 Service。
- auto_save_log(serials, data, printer_name, certificate_id=None)[源代码]¶
自动保存打印记录(委托 CertLogService,收口 print_view 原直连)。
- get_job_certificate_id(job_id)[源代码]¶
按打印任务 ID 取关联合格证 ID(H2 事件驱动重载用)。
视图层不直连 models,经本门面查
print_jobs.certificate_id。 任务不存在或 certificate_id 为空时返回 None。
- save_correction(cert_id, data, template_key)[源代码]¶
保存订正写回数据库(收口 print_view 原直连 ORM + commit)。
视图层只负责采集表单数据 / 触发护栏,不再直接持有 session 或提交事务。