certflow.controllers.report_controller module

报告控制器模块

处理报告生成的业务逻辑,协调「数据库取数 → 填充 Excel 模板 → 落盘交付」。 底层使用 ``certflow.services.report_fill_service``(openpyxl 填充 + ReportOutputService), 取代旧的报告生成器(ReportLab 程序化硬编码,与 12 模板不可维护,已排除)。

class certflow.controllers.report_controller.ReportController(db_session=None)[源代码]

基类:BaseController

报告控制器 - 处理报告生成的业务逻辑

提供质保书 / 试压报告 / 材质报告的生成,以及模板查询、文件打开等功能。

generate_report(sale_plan_ids, report_kind='quality', language='zh', records_per_page=6, export_pdf=None)[源代码]

生成报告(统一入口)。

参数:
  • sale_plan_ids (list[int]) -- 选中的销售计划 ID 列表。

  • report_kind (str) -- ``quality``(质保书) / ``pressure``(试压报告) / ``material``(材质报告)。

  • language (str) -- zh / en

  • records_per_page (int) -- 每页记录数(挑选模板变体:行数/双语)。

  • export_pdf (bool | None) -- 是否同时派生 PDF(None→读配置,默认 False)。

返回:

ReportOutputService.emit 的结果(含 success/folder/xlsx/pdf/sealed)。

返回类型:

dict

generate_pressure_test_report(sale_plan_ids, template='standard', language='zh', records_per_page=5)[源代码]

生成试压报告(兼容旧签名)。

参数:
  • sale_plan_ids (list[int])

  • template (str)

  • language (str)

  • records_per_page (int)

返回类型:

dict

generate_material_report(data_ids, report_type='material', language='zh', records_per_page=6)[源代码]

生成材质报告或质保书(兼容旧签名)。

参数:
  • data_ids (list[int]) -- 销售计划 ID 列表。

  • report_type (str) -- ``material``(材质报告) / ``quality``(质保书)。

  • language (str)

  • records_per_page (int)

返回类型:

dict

get_available_templates()[源代码]

获取可用的报告模板列表(用于 UI 展示)。

返回类型:

list[dict]

open_report_file(filepath)[源代码]

打开生成的报告文件(系统默认程序)。

参数:

filepath (str)

返回类型:

bool

open_report_folder(folder)[源代码]

打开报告目录(文件夹);不存在时惰性创建,确保可打开。

参数:

folder (str)

返回类型:

bool

get_report_statistics()[源代码]

获取报告统计信息(轻量占位,历史记录由报告目录.xlsx 承载)。

返回类型:

dict

query(conditions=None, page=1, page_size=200, or_filters=None)[源代码]

复用查询引擎对全库检索(报告数据选择)。

收口 report_viewQueryService 的直连调用,使取数统一经 Controller。

参数:
  • conditions (dict | None) -- 过滤条件字典(同 QueryService.query)

  • page (int) -- 页码,从 1 开始

  • page_size (int) -- 每页条数

  • or_filters (Any) -- 或条件(同 QueryService.query)

返回:

含 records/total 等键的查询结果

返回类型:

dict

get_distinct_field_combos(fields)[源代码]

查询可选的字段组合(供报告数据选择下拉去重)。

收口 report_viewQueryService 的直连调用。

参数:

fields (list[str]) -- 需要去重组合的字段名列表

返回:

去重后的字段值组合

返回类型:

list[tuple]

enrich_bom(pno)[源代码]

按产品型号富化 BOM 材质信息。

收口 report_viewreport_bom_enricher.enrich 的直连调用, 避免 View 直接持有 controller.session 喂给 Service 层函数。

参数:

pno (str) -- 产品型号

返回:

富化后的 BOM 材质字典

返回类型:

dict