from datetime import date, datetime from sqlalchemy import Column, Date, DateTime, Integer, Numeric, SmallInteger, String from app.core.database import Base class BizProductionMaterial(Base): __tablename__ = "biz_production_material" id = Column(String(64), primary_key=True, comment="主键ID") material_type = Column(String(32), nullable=False, comment="物料类型:reagent/consumable/configured_reagent") material_code = Column(String(64), nullable=False, comment="物料编码") material_name = Column(String(200), nullable=False, comment="物料名称") spec_model = Column(String(200), nullable=True, comment="规格型号") unit = Column(String(32), nullable=True, comment="单位") stock_qty = Column(Numeric(18, 4), nullable=False, default=0, comment="当前库存量") warning_qty = Column(Numeric(18, 4), nullable=False, default=0, comment="预警库存量") status = Column(String(1), nullable=False, default="1", comment="1-启用 0-停用") tenant_no = Column(String(64), nullable=False, default="zkxw", comment="租户编号") order_num = Column(Integer, nullable=True, comment="排序号") remark = Column(String(512), nullable=True, comment="备注") create_by = Column(String(64), nullable=True, comment="创建人id") create_dept_id = Column(String(64), nullable=False, default="", comment="创建人部门ID") create_time = Column(DateTime, nullable=False, default=datetime.now, comment="创建时间") update_by = Column(String(64), nullable=True, comment="更新人id") update_time = Column(DateTime, nullable=False, default=datetime.now, onupdate=datetime.now, comment="更新时间") del_flag = Column(SmallInteger, nullable=False, default=0, comment="删除标记") class BizProductionMaterialStockBatch(Base): __tablename__ = "biz_production_material_stock_batch" id = Column(String(64), primary_key=True, comment="主键ID") material_id = Column(String(64), nullable=False, comment="关联物料ID") material_type = Column(String(32), nullable=False, comment="物料类型快照") material_code = Column(String(64), nullable=True, comment="物料编码快照") material_name = Column(String(200), nullable=True, comment="物料名称快照") spec_model = Column(String(200), nullable=True, comment="规格型号快照") unit = Column(String(32), nullable=True, comment="单位快照") stock_in_no = Column(String(64), nullable=False, comment="入库编号") stock_in_date = Column(Date, nullable=False, comment="入库日期") expire_date = Column(Date, nullable=False, comment="过期日期") production_date = Column(Date, nullable=True, comment="生产日期") catalog_no = Column(String(128), nullable=False, comment="货号") batch_no = Column(String(128), nullable=False, comment="批号") manufacturer = Column(String(200), nullable=False, comment="厂家") storage_location = Column(String(200), nullable=True, comment="存储位置") unit_price = Column(Numeric(18, 2), nullable=False, comment="单价(元)") amount = Column(Numeric(18, 2), nullable=False, comment="金额(元)") in_qty = Column(Numeric(18, 4), nullable=False, comment="入库数量") remaining_qty = Column(Numeric(18, 4), nullable=False, comment="剩余数量") tenant_no = Column(String(64), nullable=False, default="zkxw", comment="租户编号") order_num = Column(Integer, nullable=True, comment="排序号") remark = Column(String(512), nullable=True, comment="备注") create_by = Column(String(64), nullable=True, comment="创建人id") create_dept_id = Column(String(64), nullable=False, default="", comment="创建人部门ID") create_time = Column(DateTime, nullable=False, default=datetime.now, comment="创建时间") update_by = Column(String(64), nullable=True, comment="更新人id") update_time = Column(DateTime, nullable=False, default=datetime.now, onupdate=datetime.now, comment="更新时间") del_flag = Column(SmallInteger, nullable=False, default=0, comment="删除标记") class BizProductionMaterialUsage(Base): __tablename__ = "biz_production_material_usage" id = Column(String(64), primary_key=True, comment="主键ID") material_id = Column(String(64), nullable=False, comment="物料ID") material_type = Column(String(32), nullable=False, comment="物料类型快照") material_code = Column(String(64), nullable=True, comment="物料编码快照") material_name = Column(String(200), nullable=True, comment="物料名称快照") batch_id = Column(String(64), nullable=True, comment="关联入库批次ID") stock_in_no = Column(String(64), nullable=True, comment="入库编号快照") catalog_no = Column(String(128), nullable=True, comment="货号快照") batch_no = Column(String(128), nullable=True, comment="批号快照") manufacturer = Column(String(200), nullable=True, comment="厂家快照") storage_location = Column(String(200), nullable=True, comment="存储位置快照") unit_price = Column(Numeric(18, 2), nullable=True, comment="单价快照(元)") amount = Column(Numeric(18, 2), nullable=True, comment="金额快照(元)") change_type = Column(String(16), nullable=False, comment="变动类型:use使用 / in入库 / discard废弃") change_qty = Column(Numeric(18, 4), nullable=False, comment="变动数量") usage_unit = Column(String(32), nullable=True, comment="用量单位") stock_before = Column(Numeric(18, 4), nullable=True, comment="变动前物资汇总库存") stock_after = Column(Numeric(18, 4), nullable=False, comment="变动后库存量") step_id = Column(String(64), nullable=True, comment="关联生产步骤ID") step_name = Column(String(200), nullable=True, comment="生产步骤名称快照") task_id = Column(String(64), nullable=True, comment="关联生产任务ID") task_no = Column(String(64), nullable=True, comment="生产任务号快照") parent_usage_id = Column(String(64), nullable=True, comment="关联领用记录ID") prep_id = Column(String(64), nullable=True, comment="关联配制单ID") receiver = Column(String(64), nullable=True, comment="领用人(手动出库)") purpose = Column(String(512), nullable=True, comment="用途/事由(手动出库)") requisition_status = Column( String(16), nullable=False, default="open", comment="领用状态:open-待登记/有剩余 closed-已使用完", ) source_type = Column( String(32), nullable=False, comment="来源:step_save / manual_in / manual_out / prep_consume / prep_in", ) tenant_no = Column(String(64), nullable=False, default="zkxw", comment="租户编号") remark = Column(String(512), nullable=True, comment="备注") create_by = Column(String(64), nullable=True, comment="创建人id") create_dept_id = Column(String(64), nullable=False, default="", comment="创建人部门ID") create_time = Column(DateTime, nullable=False, default=datetime.now, comment="创建时间") update_by = Column(String(64), nullable=True, comment="更新人id") update_time = Column(DateTime, nullable=False, default=datetime.now, onupdate=datetime.now, comment="更新时间") del_flag = Column(SmallInteger, nullable=False, default=0, comment="删除标记") class BizProductionMaterialFormula(Base): __tablename__ = "biz_production_material_formula" id = Column(String(64), primary_key=True, comment="主键ID") configured_material_id = Column(String(64), nullable=False, comment="配置试剂目录ID") component_material_id = Column(String(64), nullable=False, comment="子物料目录ID") component_material_type = Column(String(32), nullable=False, comment="reagent/consumable") component_material_code = Column(String(64), nullable=True, comment="子物料编码快照") component_material_name = Column(String(200), nullable=True, comment="子物料名称快照") standard_qty = Column(Numeric(18, 4), nullable=False, default=0, comment="标准用量") usage_unit = Column(String(32), nullable=True, comment="单位") tenant_no = Column(String(64), nullable=False, default="zkxw", comment="租户编号") order_num = Column(Integer, nullable=True, comment="排序号") remark = Column(String(512), nullable=True, comment="备注") create_by = Column(String(64), nullable=True, comment="创建人id") create_dept_id = Column(String(64), nullable=False, default="", comment="创建人部门ID") create_time = Column(DateTime, nullable=False, default=datetime.now, comment="创建时间") update_by = Column(String(64), nullable=True, comment="更新人id") update_time = Column(DateTime, nullable=False, default=datetime.now, onupdate=datetime.now, comment="更新时间") del_flag = Column(SmallInteger, nullable=False, default=0, comment="删除标记") class BizProductionMaterialPrep(Base): __tablename__ = "biz_production_material_prep" id = Column(String(64), primary_key=True, comment="主键ID") prep_no = Column(String(64), nullable=False, comment="配制单号") configured_material_id = Column(String(64), nullable=False, comment="配置试剂目录ID") configured_material_code = Column(String(64), nullable=True, comment="配置试剂编码快照") configured_material_name = Column(String(200), nullable=True, comment="配置试剂名称快照") prep_time = Column(DateTime, nullable=False, comment="配制时间") output_qty = Column(Numeric(18, 4), nullable=False, comment="产出数量") output_unit = Column(String(32), nullable=True, comment="产出单位") batch_no = Column(String(128), nullable=False, comment="产出批号") storage_location = Column(String(200), nullable=True, comment="产出存储位置") expire_date = Column(Date, nullable=False, comment="过期日期") stock_in_no = Column(String(64), nullable=True, comment="产出入库编号") output_batch_id = Column(String(64), nullable=True, comment="产出批次ID") status = Column(String(16), nullable=False, default="draft", comment="draft/completed/cancelled") tenant_no = Column(String(64), nullable=False, default="zkxw", comment="租户编号") order_num = Column(Integer, nullable=True, comment="排序号") remark = Column(String(512), nullable=True, comment="备注") create_by = Column(String(64), nullable=True, comment="创建人id") create_dept_id = Column(String(64), nullable=False, default="", comment="创建人部门ID") create_time = Column(DateTime, nullable=False, default=datetime.now, comment="创建时间") update_by = Column(String(64), nullable=True, comment="更新人id") update_time = Column(DateTime, nullable=False, default=datetime.now, onupdate=datetime.now, comment="更新时间") del_flag = Column(SmallInteger, nullable=False, default=0, comment="删除标记") class BizProductionMaterialPrepLine(Base): __tablename__ = "biz_production_material_prep_line" id = Column(String(64), primary_key=True, comment="主键ID") prep_id = Column(String(64), nullable=False, comment="配制单ID") component_material_id = Column(String(64), nullable=False, comment="子物料目录ID") component_material_type = Column(String(32), nullable=False, comment="reagent/consumable") component_material_code = Column(String(64), nullable=True, comment="子物料编码快照") component_material_name = Column(String(200), nullable=True, comment="子物料名称快照") requisition_usage_id = Column(String(64), nullable=True, comment="领用记录ID") actual_qty = Column(Numeric(18, 4), nullable=False, default=0, comment="实际用量") usage_unit = Column(String(32), nullable=True, comment="单位") tenant_no = Column(String(64), nullable=False, default="zkxw", comment="租户编号") order_num = Column(Integer, nullable=True, comment="排序号") remark = Column(String(512), nullable=True, comment="备注") create_by = Column(String(64), nullable=True, comment="创建人id") create_dept_id = Column(String(64), nullable=False, default="", comment="创建人部门ID") create_time = Column(DateTime, nullable=False, default=datetime.now, comment="创建时间") update_by = Column(String(64), nullable=True, comment="更新人id") update_time = Column(DateTime, nullable=False, default=datetime.now, onupdate=datetime.now, comment="更新时间") del_flag = Column(SmallInteger, nullable=False, default=0, comment="删除标记") class BizProductionMaterialStockCheck(Base): __tablename__ = "biz_production_material_stock_check" id = Column(String(64), primary_key=True, comment="主键ID") title = Column(String(200), nullable=False, comment="盘点标题") check_time = Column(DateTime, nullable=False, comment="盘点时间") status = Column(String(16), nullable=False, default="draft", comment="draft/completed/cancelled") complete_time = Column(DateTime, nullable=True, comment="完成时间") tenant_no = Column(String(64), nullable=False, default="zkxw", comment="租户编号") order_num = Column(Integer, nullable=True, comment="排序号") remark = Column(String(512), nullable=True, comment="备注") create_by = Column(String(64), nullable=True, comment="创建人id") create_dept_id = Column(String(64), nullable=False, default="", comment="创建人部门ID") create_time = Column(DateTime, nullable=False, default=datetime.now, comment="创建时间") update_by = Column(String(64), nullable=True, comment="更新人id") update_time = Column(DateTime, nullable=False, default=datetime.now, onupdate=datetime.now, comment="更新时间") del_flag = Column(SmallInteger, nullable=False, default=0, comment="删除标记") class BizProductionMaterialStockCheckBatchLine(Base): __tablename__ = "biz_production_material_stock_check_batch_line" id = Column(String(64), primary_key=True, comment="主键ID") check_id = Column(String(64), nullable=False, comment="盘点单ID") batch_id = Column(String(64), nullable=False, comment="原入库批次ID") material_id = Column(String(64), nullable=False, comment="物资ID") material_type = Column(String(32), nullable=False, comment="物料类型快照") material_code = Column(String(64), nullable=True, comment="物料编码快照") material_name = Column(String(200), nullable=True, comment="物料名称快照") spec_model = Column(String(200), nullable=True, comment="规格型号快照") unit = Column(String(32), nullable=True, comment="单位快照") stock_in_no = Column(String(64), nullable=False, comment="入库编号快照") stock_in_date = Column(Date, nullable=False, comment="入库日期快照") expire_date = Column(Date, nullable=False, comment="过期日期快照") catalog_no = Column(String(128), nullable=False, comment="货号快照") batch_no = Column(String(128), nullable=False, comment="批号快照") manufacturer = Column(String(200), nullable=False, comment="厂家快照") storage_location = Column(String(200), nullable=True, comment="存储位置快照") unit_price = Column(Numeric(18, 2), nullable=False, comment="单价快照(元)") amount = Column(Numeric(18, 2), nullable=False, comment="批次金额快照(元)") remaining_qty = Column(Numeric(18, 4), nullable=False, comment="快照时点剩余数量") tenant_no = Column(String(64), nullable=False, default="zkxw", comment="租户编号") order_num = Column(Integer, nullable=True, comment="排序号") remark = Column(String(512), nullable=True, comment="备注") create_by = Column(String(64), nullable=True, comment="创建人id") create_dept_id = Column(String(64), nullable=False, default="", comment="创建人部门ID") create_time = Column(DateTime, nullable=False, default=datetime.now, comment="创建时间") update_by = Column(String(64), nullable=True, comment="更新人id") update_time = Column(DateTime, nullable=False, default=datetime.now, onupdate=datetime.now, comment="更新时间") del_flag = Column(SmallInteger, nullable=False, default=0, comment="删除标记") class BizProductionMaterialStockCheckUnusedLine(Base): __tablename__ = "biz_production_material_stock_check_unused_line" id = Column(String(64), primary_key=True, comment="主键ID") check_id = Column(String(64), nullable=False, comment="盘点单ID") usage_id = Column(String(64), nullable=True, comment="关联领用记录ID") batch_id = Column(String(64), nullable=True, comment="关联入库批次ID") material_type = Column(String(32), nullable=True, comment="物料类型") material_code = Column(String(64), nullable=True, comment="物料编码") material_name = Column(String(200), nullable=False, comment="物料名称") spec_model = Column(String(200), nullable=True, comment="规格型号") unit = Column(String(32), nullable=True, comment="单位") stock_in_no = Column(String(64), nullable=True, comment="入库编号") stock_in_date = Column(Date, nullable=True, comment="入库日期") expire_date = Column(Date, nullable=True, comment="过期日期") catalog_no = Column(String(128), nullable=True, comment="货号") batch_no = Column(String(128), nullable=True, comment="批号") manufacturer = Column(String(200), nullable=True, comment="厂家") unit_price = Column(Numeric(18, 2), nullable=True, comment="单价快照(元)") holder = Column(String(64), nullable=True, comment="持有人/领用人") unused_qty = Column(Numeric(18, 4), nullable=False, comment="未用完数量") tenant_no = Column(String(64), nullable=False, default="zkxw", comment="租户编号") order_num = Column(Integer, nullable=True, comment="排序号") remark = Column(String(512), nullable=True, comment="备注") create_by = Column(String(64), nullable=True, comment="创建人id") create_dept_id = Column(String(64), nullable=False, default="", comment="创建人部门ID") create_time = Column(DateTime, nullable=False, default=datetime.now, comment="创建时间") update_by = Column(String(64), nullable=True, comment="更新人id") update_time = Column(DateTime, nullable=False, default=datetime.now, onupdate=datetime.now, comment="更新时间") del_flag = Column(SmallInteger, nullable=False, default=0, comment="删除标记")