certflow.controllers.bom_material_controller module

BOM 零件牌号控制器

桥接 BomMaterial 查询视图(View)与 BOM 零件服务(Service):封装按生产令号 查询、来源统计与材料牌号订正(手动/自学习)等业务逻辑,视图不直接操作 ORM。 模型类与来源常量经服务层间接引用,控制器不直接依赖 certflow.models.*

架构层次:View (BomMaterialQueryView) → Controller (BomMaterialController)

→ Service (bom_material_service) → Model (BomMaterial)

class certflow.controllers.bom_material_controller.BomMaterialController(db_session=None, db_manager=None, use_shared=True)[源代码]

基类:BaseController

BOM 零件牌号控制器 — 查询视图的业务调度层

参数:

use_shared (bool)

search(production_order_no, *, fuzzy=False)[源代码]

按生产令号查询其全部零件。

参数:
  • production_order_no (str) -- 生产令号(精确匹配或模糊包含)

  • fuzzy (bool) -- True 时使用 LIKE %pon% 模糊匹配

返回:

list[BomMaterial]:按 (生产令号, 序号) 排序的零件记录

返回类型:

list[BomMaterial]

list_all()[源代码]

返回全部 BOM 零件记录(按 生产令号, 序号 排序)。

返回类型:

list[BomMaterial]

get_by_id(record_id)[源代码]

按主键获取记录。

参数:

record_id (int)

返回类型:

BomMaterial | None

distinct_production_order_nos()[源代码]

返回全部不重复的生产令号(升序),供搜索框自动补全。

返回类型:

list[str]

source_summary()[源代码]

统计各材料牌号来源的记录数(用于状态栏展示)。

返回类型:

dict[str, int]

update_material_grade(record_id, material_grade, material_source='manual', material_note=None)[源代码]

订正某零件的材料牌号,并记录来源与更新时间。

参数:
  • record_id (int) -- 记录主键

  • material_grade (str | None) -- 新的材料牌号(空串/None 视为清空)

  • material_source (str) -- 来源(manual/auto_learn),缺省 manual

  • material_note (str | None) -- 补全备注

返回:

是否更新成功(id 不存在返回 False)

返回类型:

bool

auto_fill(record_id, material_grade, material_note=None)[源代码]

自学习补全某零件的材料牌号(来源固定 auto_learn)。

参数:
  • record_id (int)

  • material_grade (str)

  • material_note (str | None)

返回类型:

bool

static material_source_choices()[源代码]

材料来源下拉选项(委托 model MATERIAL_SOURCE_CHOICES)。

返回类型:

list[tuple[str, str]]

static scan_and_import(folder, session, *, mode='skip')[源代码]

递归扫描目录并入库(委托 bom_material_service.scan_and_import)。

参数:
  • folder (str) -- 待扫描目录

  • session (Any) -- SQLAlchemy 会话

  • mode (str) -- 导入模式(clear/append/refresh/skip)

返回:

导入统计字典(files/rows/orders/...)

返回类型:

dict[str, Any]