from datetime import datetime from sqlalchemy import ( CHAR, BigInteger, CheckConstraint, Column, DateTime, ForeignKey, Integer, String, UniqueConstraint, ) from config.database import Base from config.env import DataBaseConfig from utils.common_util import SqlalchemyUtil class BizStrain(Base): """菌种主数据表。""" __tablename__ = 'biz_strain' __table_args__ = ( CheckConstraint("status IN ('0', '1')", name='ck_biz_strain_status'), {'comment': '菌种主数据表'}, ) strain_id = Column(BigInteger, primary_key=True, nullable=False, autoincrement=True, comment='菌种ID') test_batch_id = Column( BigInteger, ForeignKey('biz_test_batch.batch_id'), nullable=True, index=True, comment='测试数据批次ID;NULL表示正式数据', ) strain_code = Column(String(64), nullable=False, unique=True, comment='菌种编码') strain_name = Column(String(100), nullable=False, comment='菌种名称') status = Column(CHAR(1), nullable=False, server_default='0', comment='状态(0正常 1停用)') create_by = Column(String(64), nullable=True, server_default='', comment='创建者') create_time = Column(DateTime, nullable=True, default=datetime.now, comment='创建时间') update_by = Column(String(64), nullable=True, server_default='', comment='更新者') update_time = Column(DateTime, nullable=True, default=datetime.now, comment='更新时间') remark = Column( String(500), nullable=True, server_default=SqlalchemyUtil.get_server_default_null(DataBaseConfig.db_type), comment='备注', ) class BizWarehouse(Base): """仓库主数据表。""" __tablename__ = 'biz_warehouse' __table_args__ = ( CheckConstraint("status IN ('0', '1')", name='ck_biz_warehouse_status'), {'comment': '仓库主数据表'}, ) warehouse_id = Column(BigInteger, primary_key=True, nullable=False, autoincrement=True, comment='仓库ID') test_batch_id = Column( BigInteger, ForeignKey('biz_test_batch.batch_id'), nullable=True, index=True, comment='测试数据批次ID;NULL表示正式数据', ) warehouse_code = Column(String(64), nullable=False, unique=True, comment='仓库编码') warehouse_name = Column(String(100), nullable=False, comment='仓库名称') address = Column(String(500), nullable=True, comment='仓库地址') status = Column(CHAR(1), nullable=False, server_default='0', comment='状态(0正常 1停用)') create_by = Column(String(64), nullable=True, server_default='', comment='创建者') create_time = Column(DateTime, nullable=True, default=datetime.now, comment='创建时间') update_by = Column(String(64), nullable=True, server_default='', comment='更新者') update_time = Column(DateTime, nullable=True, default=datetime.now, comment='更新时间') remark = Column( String(500), nullable=True, server_default=SqlalchemyUtil.get_server_default_null(DataBaseConfig.db_type), comment='备注', ) class BizCustomer(Base): """客户主数据表。""" __tablename__ = 'biz_customer' __table_args__ = ( CheckConstraint("status IN ('0', '1')", name='ck_biz_customer_status'), {'comment': '客户主数据表'}, ) customer_id = Column(BigInteger, primary_key=True, nullable=False, autoincrement=True, comment='客户ID') test_batch_id = Column( BigInteger, ForeignKey('biz_test_batch.batch_id'), nullable=True, index=True, comment='测试数据批次ID;NULL表示正式数据', ) customer_code = Column(String(64), nullable=False, unique=True, comment='客户编码') customer_name = Column(String(100), nullable=False, comment='客户名称') status = Column(CHAR(1), nullable=False, server_default='0', comment='状态(0正常 1停用)') create_by = Column(String(64), nullable=True, server_default='', comment='创建者') create_time = Column(DateTime, nullable=True, default=datetime.now, comment='创建时间') update_by = Column(String(64), nullable=True, server_default='', comment='更新者') update_time = Column(DateTime, nullable=True, default=datetime.now, comment='更新时间') remark = Column( String(500), nullable=True, server_default=SqlalchemyUtil.get_server_default_null(DataBaseConfig.db_type), comment='备注', ) class BizCustomerSite(Base): """客户现场主数据表。""" __tablename__ = 'biz_customer_site' __table_args__ = ( UniqueConstraint('customer_id', 'site_code', name='uq_biz_customer_site_customer_code'), CheckConstraint("status IN ('0', '1')", name='ck_biz_customer_site_status'), {'comment': '客户现场主数据表'}, ) site_id = Column(BigInteger, primary_key=True, nullable=False, autoincrement=True, comment='现场ID') test_batch_id = Column( BigInteger, ForeignKey('biz_test_batch.batch_id'), nullable=True, index=True, comment='测试数据批次ID;NULL表示正式数据', ) customer_id = Column( BigInteger, ForeignKey('biz_customer.customer_id'), nullable=False, comment='客户ID', ) site_code = Column(String(64), nullable=False, comment='现场编码') site_name = Column(String(100), nullable=False, comment='现场名称') address = Column(String(500), nullable=True, comment='现场地址') status = Column(CHAR(1), nullable=False, server_default='0', comment='状态(0正常 1停用)') create_by = Column(String(64), nullable=True, server_default='', comment='创建者') create_time = Column(DateTime, nullable=True, default=datetime.now, comment='创建时间') update_by = Column(String(64), nullable=True, server_default='', comment='更新者') update_time = Column(DateTime, nullable=True, default=datetime.now, comment='更新时间') remark = Column( String(500), nullable=True, server_default=SqlalchemyUtil.get_server_default_null(DataBaseConfig.db_type), comment='备注', ) class BizProductionLine(Base): """客户现场产线主数据表。""" __tablename__ = 'biz_production_line' __table_args__ = ( UniqueConstraint('site_id', 'line_code', name='uq_biz_production_line_site_code'), CheckConstraint("status IN ('0', '1')", name='ck_biz_production_line_status'), {'comment': '客户现场产线主数据表'}, ) line_id = Column(BigInteger, primary_key=True, nullable=False, autoincrement=True, comment='产线ID') test_batch_id = Column( BigInteger, ForeignKey('biz_test_batch.batch_id'), nullable=True, index=True, comment='测试数据批次ID;NULL表示正式数据', ) site_id = Column( BigInteger, ForeignKey('biz_customer_site.site_id'), nullable=False, comment='现场ID', ) line_code = Column(String(64), nullable=False, comment='产线编码') line_name = Column(String(100), nullable=False, comment='产线名称') status = Column(CHAR(1), nullable=False, server_default='0', comment='状态(0正常 1停用)') create_by = Column(String(64), nullable=True, server_default='', comment='创建者') create_time = Column(DateTime, nullable=True, default=datetime.now, comment='创建时间') update_by = Column(String(64), nullable=True, server_default='', comment='更新者') update_time = Column(DateTime, nullable=True, default=datetime.now, comment='更新时间') remark = Column( String(500), nullable=True, server_default=SqlalchemyUtil.get_server_default_null(DataBaseConfig.db_type), comment='备注', ) class BizPallet(Base): """托盘资产主数据表。""" __tablename__ = 'biz_pallet' __table_args__ = ( CheckConstraint('capacity_packages > 0', name='ck_biz_pallet_capacity_packages'), CheckConstraint("asset_status IN ('0', '1')", name='ck_biz_pallet_asset_status'), {'comment': '托盘资产主数据表'}, ) pallet_id = Column(BigInteger, primary_key=True, nullable=False, autoincrement=True, comment='托盘ID') test_batch_id = Column( BigInteger, ForeignKey('biz_test_batch.batch_id'), nullable=True, index=True, comment='测试数据批次ID;NULL表示正式数据', ) pallet_code = Column(String(64), nullable=False, unique=True, comment='托盘编号') qr_token = Column(String(128), nullable=False, unique=True, comment='二维码固定标识') capacity_packages = Column(Integer, nullable=False, comment='容量包数') asset_status = Column(CHAR(1), nullable=False, server_default='0', comment='资产状态(0正常 1停用)') create_by = Column(String(64), nullable=True, server_default='', comment='创建者') create_time = Column(DateTime, nullable=True, default=datetime.now, comment='创建时间') update_by = Column(String(64), nullable=True, server_default='', comment='更新者') update_time = Column(DateTime, nullable=True, default=datetime.now, comment='更新时间') remark = Column( String(500), nullable=True, server_default=SqlalchemyUtil.get_server_default_null(DataBaseConfig.db_type), comment='备注', ) class BizUserWarehouse(Base): """用户与仓库关联表。""" __tablename__ = 'biz_user_warehouse' __table_args__ = {'comment': '用户与仓库关联表'} user_id = Column( BigInteger, ForeignKey('sys_user.user_id'), primary_key=True, nullable=False, comment='用户ID', ) warehouse_id = Column( BigInteger, ForeignKey('biz_warehouse.warehouse_id'), primary_key=True, nullable=False, comment='仓库ID', ) create_by = Column(String(64), nullable=True, server_default='', comment='创建者') create_time = Column(DateTime, nullable=True, default=datetime.now, comment='创建时间') class BizUserSite(Base): """用户与客户现场关联表。""" __tablename__ = 'biz_user_site' __table_args__ = {'comment': '用户与客户现场关联表'} user_id = Column( BigInteger, ForeignKey('sys_user.user_id'), primary_key=True, nullable=False, comment='用户ID', ) site_id = Column( BigInteger, ForeignKey('biz_customer_site.site_id'), primary_key=True, nullable=False, comment='现场ID', ) create_by = Column(String(64), nullable=True, server_default='', comment='创建者') create_time = Column(DateTime, nullable=True, default=datetime.now, comment='创建时间')