"""数据模型(与 docs/sql/zkxw.sql 全库导出基线对齐的核心系统表)""" from datetime import datetime import enum from sqlalchemy import Column, String, DateTime, Integer, Text, CHAR, SmallInteger, Numeric from app.core.database import Base class UserRole(str, enum.Enum): """Web 管理端约定角色(由 sys_role.role_name 映射而来,非数据库枚举)""" ADMIN = "admin" SUPER_ADMIN = "super_admin" # ============================================================================= # V0.3 用户 / 角色 / 菜单(2.1.4 ~ 2.1.6) # ============================================================================= class SysUser(Base): """用户表 sys_user(V0.3)""" __tablename__ = "sys_user" id = Column(String(64), primary_key=True, comment="主键ID") dept_id = Column(String(64), nullable=True, comment="部门ID") user_no = Column(String(30), nullable=False, comment="用户账号") nick_name = Column(String(30), nullable=False, comment="用户名") email = Column(String(50), nullable=False, default="", comment="用户邮箱") phone_no = Column(String(11), nullable=False, default="", comment="手机号码") sex = Column(CHAR(1), nullable=True, default="0", comment="用户性别") avatar = Column(String(512), nullable=True, comment="头像") password = Column("password", String(100), nullable=False, default="", comment="密码") status = Column(CHAR(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="删除标记 0正常 1已删除") class SysRole(Base): """角色表 sys_role(V0.3)""" __tablename__ = "sys_role" id = Column(String(64), primary_key=True, comment="主键ID") role_name = Column(String(30), nullable=False, comment="角色名称") data_scope = Column(CHAR(1), nullable=True, default="1", comment="数据权限") status = Column(CHAR(1), nullable=False, default="1", 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 SysUserRole(Base): """用户-角色关联 sys_user_role(V0.3)""" __tablename__ = "sys_user_role" id = Column(String(64), primary_key=True, comment="主键ID") user_id = Column(String(64), nullable=False, comment="用户ID") role_id = Column(String(64), nullable=False, comment="角色ID") 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 SysRoleMenu(Base): """角色-菜单关联 sys_role_menu(V0.3)""" __tablename__ = "sys_role_menu" id = Column(String(64), primary_key=True, comment="主键ID") role_id = Column(String(64), nullable=False, comment="角色ID") menu_id = Column(String(64), nullable=False, comment="菜单ID") 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 SysRoleDataScopeDetail(Base): """角色自定义数据权限明细 sys_role_data_scope_detail""" __tablename__ = "sys_role_data_scope_detail" id = Column(String(64), primary_key=True, comment="主键ID") role_id = Column(String(64), nullable=False, comment="角色ID") scope_type = Column(String(20), nullable=False, comment="范围类型:dept/user") scope_value = Column(String(100), nullable=False, comment="范围值:部门ID/用户ID") 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 SysMenu(Base): """菜单表 sys_menu(V0.3)""" __tablename__ = "sys_menu" id = Column(String(64), primary_key=True, comment="主键ID") menu_name = Column(String(50), nullable=False, comment="菜单名称") parent_id = Column(String(64), nullable=False, default="0", comment="父菜单ID") menu_type = Column(CHAR(1), nullable=True, default="M", comment="类型 M目录 C菜单 F按钮") path = Column(String(200), nullable=False, default="", comment="路由路径") component = Column(String(255), nullable=True, comment="组件路径") perms = Column(String(100), nullable=True, comment="权限标识") is_frame = Column(Integer, nullable=True, default=1, comment="是否外链") visible = Column(CHAR(1), nullable=True, default="1", comment="显示状态") status = Column(CHAR(1), nullable=False, default="1", 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 SysDept(Base): """组织/部门 sys_dept""" __tablename__ = "sys_dept" id = Column(String(64), primary_key=True, comment="主键ID") parent_id = Column(String(64), nullable=False, default="0", comment="父组织id") dept_name = Column(String(200), nullable=False, comment="组织名称") dept_category_code = Column(String(64), nullable=True, comment="组织类别编码") status = Column(CHAR(1), nullable=False, default="1", comment="部门状态") leader = Column(String(100), nullable=True, comment="部门负责人") leader_phone = 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 SysTenant(Base): """租户表 sys_tenant(V0.3 2.1.1)""" __tablename__ = "sys_tenant" id = Column(String(64), primary_key=True, comment="主键ID") tenant_no = Column(String(64), nullable=False, comment="租户编号(业务编码)") tenant_name = Column(String(200), nullable=False, comment="租户名称") contact_name = Column(String(100), nullable=True, comment="联系人姓名") contact_phone = Column(String(32), nullable=True, 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="删除标记:0-正常 1-已删除") class SysSite(Base): """站点 sys_site""" __tablename__ = "sys_site" id = Column(String(64), primary_key=True, comment="主键ID") site_name = Column(String(200), nullable=False, comment="站点名称") site_code = Column(String(64), nullable=False, comment="站点编码") site_type = Column(String(64), nullable=True, comment="站点类型") status = Column(CHAR(1), nullable=False, default="1", comment="状态") address = Column(String(512), nullable=True, comment="详细地址") contact_name = Column(String(100), nullable=True, comment="联系人") contact_phone = Column(String(32), nullable=True, comment="联系电话") business_scope = Column(String(256), 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 SysPost(Base): """职位 sys_post""" __tablename__ = "sys_post" id = Column(String(64), primary_key=True, comment="主键ID") post_name = Column(String(100), nullable=False, comment="职位名称") post_code = Column(String(64), nullable=False, comment="职位编码") status = Column(CHAR(1), nullable=False, default="1", 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 SysUserPost(Base): """用户-职位关联 sys_user_post""" __tablename__ = "sys_user_post" id = Column(String(64), primary_key=True, comment="主键ID") user_id = Column(String(64), nullable=False, comment="用户ID") post_id = Column(String(64), nullable=False, comment="职位ID") 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 BizItemUnit(Base): """物品单位 biz_item_unit""" __tablename__ = "biz_item_unit" id = Column(String(64), primary_key=True, comment="主键ID") unit_code = Column(String(64), nullable=False, comment="单位编码") unit_name = Column(String(100), 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 BizExpressCompany(Base): """快递公司 biz_express_company""" __tablename__ = "biz_express_company" id = Column(String(64), primary_key=True, comment="主键ID") express_code = Column(String(64), nullable=False, comment="快递公司编码") express_name = Column(String(200), 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 BizCustomer(Base): """客户 biz_customer""" __tablename__ = "biz_customer" id = Column(String(64), primary_key=True, comment="主键ID") customer_name = Column(String(100), nullable=False, comment="客户姓名") sex = Column(CHAR(1), nullable=True, default="2", comment="性别(0男1女2未知)") id_card_no = Column(String(32), nullable=True, comment="身份证号") age = Column(Integer, nullable=True, comment="年龄") phone_no = Column(String(32), nullable=True, comment="联系电话") customer_tags = Column(String(512), 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 BizCellSampleType(Base): """细胞样本类型 biz_cell_sample_type""" __tablename__ = "biz_cell_sample_type" id = Column(String(64), primary_key=True, comment="主键ID") type_code = Column(String(64), nullable=False, comment="样本类型编码") type_name = Column(String(200), nullable=False, comment="样本类型名称") storage_years = Column(Integer, nullable=True, comment="样本存储年份") storage_price = Column(Numeric(18, 2), 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 BizCollectionRegion(Base): """采集地区 biz_collection_region""" __tablename__ = "biz_collection_region" id = Column(String(64), primary_key=True, comment="主键ID") region_name = Column(String(200), 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 BizCollectionHospital(Base): """采集地区下属医院 biz_collection_hospital""" __tablename__ = "biz_collection_hospital" id = Column(String(64), primary_key=True, comment="主键ID") region_id = Column(String(64), nullable=False, comment="采集地区ID") hospital_name = Column(String(200), 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 BizCollectionProtocolNo(Base): """采集协议号池 biz_collection_protocol_no""" __tablename__ = "biz_collection_protocol_no" id = Column(String(64), primary_key=True, comment="主键ID") protocol_no = Column(String(32), nullable=False, comment="采集协议号") issued = Column(SmallInteger, nullable=False, default=0, comment="是否下发(1是0否)") issued_user_id = Column(String(64), nullable=True, comment="下发用户ID") issued_user_name = Column(String(100), nullable=True, comment="下发用户姓名(冗余)") issued_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 BizSampleCode(Base): """样本编码池 biz_sample_code""" __tablename__ = "biz_sample_code" id = Column(String(64), primary_key=True, comment="主键ID") sample_code = Column(String(32), nullable=False, comment="样本编码") sample_code_type = Column(String(16), nullable=True, comment="样本编码类型 zxbm造血编码 qdbm脐带编码") issued = Column(SmallInteger, nullable=False, default=0, comment="是否下发(1是0否)") issued_user_id = Column(String(64), nullable=True, comment="下发用户ID") issued_user_name = Column(String(100), nullable=True, comment="下发用户姓名(冗余)") issued_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="删除标记") # ============================================================================= # 字典管理(sys_dict_type / sys_dict_data) # ============================================================================= class SysDictType(Base): """字典类型 sys_dict_type""" __tablename__ = "sys_dict_type" id = Column(String(64), primary_key=True, comment="主键ID") dict_name = Column(String(100), nullable=False, default="", comment="字典名称") dict_type = Column(String(100), nullable=False, default="", 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 SysEthnic(Base): """民族码表 sys_ethnic(国标 GB/T 3304,全局)""" __tablename__ = "sys_ethnic" id = Column(String(64), primary_key=True, comment="主键ID") ethnic_name = Column(String(64), nullable=False, default="", comment="民族名称") ethnic_code = Column(String(16), nullable=False, default="", comment="民族编码") tenant_no = Column(String(64), nullable=False, default="", 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 SysDictData(Base): """字典数据 sys_dict_data""" __tablename__ = "sys_dict_data" id = Column(String(64), primary_key=True, comment="主键ID") dict_label = Column(String(100), nullable=False, default="", comment="字典标签") dict_value = Column(String(100), nullable=False, default="", comment="字典键值") dict_type = Column(String(100), nullable=False, default="", 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="删除标记") # ============================================================================= # 可选:API 请求日志(不在 V0.3 DDL 内;无表时中间件写入会失败并记录 warning) # ============================================================================= class SysApiRequestLog(Base): """API 请求日志""" __tablename__ = "sys_api_request_log" id = Column(String(64), primary_key=True, comment="主键ID") http_method = Column(String(10), nullable=False, comment="HTTP 方法") path = Column(String(500), nullable=False, comment="请求路径") query_string = Column(String(2000), nullable=True, comment="Query 字符串") request_body = Column(Text, nullable=True, comment="请求体(截断)") response_body = Column(Text, nullable=True, comment="响应体(截断)") status_code = Column(Integer, nullable=False, comment="HTTP 状态码") duration_ms = Column(Integer, nullable=False, comment="耗时(ms)") user_id = Column(String(64), nullable=True, comment="用户ID(JWT 解析)") username = Column(String(100), nullable=True, comment="用户名") role = Column(String(64), nullable=True, comment="角色") ip_address = Column(String(50), nullable=True, comment="IP地址") user_agent = Column(String(500), nullable=True, comment="User-Agent") is_del = Column(Integer, default=0, comment="是否删除") create_at = Column(DateTime, default=datetime.now, comment="创建时间") create_by = Column(String(32), nullable=True, comment="创建人ID") create_name = Column(String(100), nullable=True, comment="创建人姓名") update_at = Column(DateTime, default=datetime.now, onupdate=datetime.now, comment="修改时间") update_by = Column(String(32), nullable=True, comment="修改人ID") class SysApiRequestLogHis(Base): """API 请求日志历史表""" __tablename__ = "sys_api_request_log_his" id = Column(String(64), primary_key=True, nullable=False, comment="主键ID") http_method = Column(String(10), nullable=False, comment="HTTP 方法") path = Column(String(500), nullable=False, comment="请求路径") query_string = Column(String(2000), nullable=True, comment="Query 字符串") request_body = Column(Text, nullable=True, comment="请求体(截断)") response_body = Column(Text, nullable=True, comment="响应体(截断)") status_code = Column(Integer, nullable=False, comment="HTTP 状态码") duration_ms = Column(Integer, nullable=False, comment="耗时(ms)") user_id = Column(String(64), nullable=True, comment="用户ID") username = Column(String(100), nullable=True, comment="用户名") role = Column(String(64), nullable=True, comment="角色") ip_address = Column(String(50), nullable=True, comment="IP地址") user_agent = Column(String(500), nullable=True, comment="User-Agent") create_at = Column(DateTime, default=datetime.now, comment="创建时间") create_by = Column(String(32), nullable=True, comment="创建人ID") create_name = Column(String(100), nullable=True, comment="创建人姓名") update_at = Column(DateTime, nullable=True, comment="修改时间") update_by = Column(String(32), nullable=True, comment="修改人ID") his_create_at = Column(DateTime, default=datetime.now, comment="历史记录创建时间") # ============================================================================= # 业务表(biz_leave_request) # ============================================================================= class BizLeaveRequest(Base): """请假申请 biz_leave_request""" __tablename__ = "biz_leave_request" id = Column(String(64), primary_key=True, comment="主键ID") leave_type = Column(String(32), nullable=False, default="personal", comment="请假类型: personal/sick/annual/other") start_date = Column(String(20), nullable=False, comment="开始日期") end_date = Column(String(20), nullable=False, comment="结束日期") days = Column(Integer, nullable=False, default=1, comment="请假天数") reason = Column(String(500), nullable=True, comment="请假原因") wf_instance_id = Column(String(64), nullable=True, comment="流程实例ID") status = Column(String(32), nullable=False, default="draft", comment="状态: draft/pending/approved/rejected/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="删除标记:0-正常 1-已删除") # ============================================================================= # 工作流(wf_process_def / wf_process_version / wf_node / wf_transition / wf_process_instance / wf_task) # ============================================================================= class WfProcessDef(Base): """流程定义 wf_process_def""" __tablename__ = "wf_process_def" id = Column(String(64), primary_key=True, comment="主键ID") process_code = Column(String(64), nullable=False, comment="流程编码") process_name = Column(String(200), nullable=False, comment="流程名称") status = Column(CHAR(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="删除标记:0-正常 1-已删除") class WfProcessVersion(Base): """流程定义版本 wf_process_version""" __tablename__ = "wf_process_version" id = Column(String(64), primary_key=True, comment="主键ID") process_def_id = Column(String(64), nullable=False, comment="流程定义ID") version_no = Column(Integer, nullable=False, comment="版本号,递增") graph_json = Column(Text, nullable=True, comment="节点与连线等配置(JSON 字符串)") is_latest = Column(CHAR(1), nullable=True, default="0", 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="删除标记:0-正常 1-已删除") class WfNode(Base): """流程节点 wf_node""" __tablename__ = "wf_node" id = Column(String(64), primary_key=True, comment="主键ID") process_version_id = Column(String(64), nullable=False, comment="流程版本ID") node_key = Column(String(64), nullable=False, comment="节点唯一键(画布内)") node_type = Column(String(32), nullable=False, comment="start/end/approval/condition 等") node_name = Column(String(200), nullable=True, comment="节点名称") config_json = Column(Text, nullable=True, comment="审批人/SQL/会签策略等配置") 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="删除标记:0-正常 1-已删除") class WfTransition(Base): """流程连线/转移 wf_transition""" __tablename__ = "wf_transition" id = Column(String(64), primary_key=True, comment="主键ID") process_version_id = Column(String(64), nullable=False, comment="流程版本ID") from_node_key = Column(String(64), nullable=False, comment="起始节点key") to_node_key = Column(String(64), nullable=False, comment="目标节点key") condition_expr = Column(String(512), 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="删除标记:0-正常 1-已删除") class WfProcessInstance(Base): """流程实例 wf_process_instance""" __tablename__ = "wf_process_instance" id = Column(String(64), primary_key=True, comment="主键ID") process_version_id = Column(String(64), nullable=False, comment="发起时锁定的流程版本ID") business_type = Column(String(64), nullable=True, comment="业务类型") business_id = Column(String(64), nullable=True, comment="业务主键") starter_user_id = Column(String(64), nullable=True, comment="发起人") variables_json = Column(Text, nullable=True, comment="流程变量 JSON") status = Column(String(32), nullable=True, comment="running/completed/rejected 等") callback_url = Column(String(512), 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="删除标记:0-正常 1-已删除") class WfTask(Base): """流程任务/待办 wf_task""" __tablename__ = "wf_task" id = Column(String(64), primary_key=True, comment="主键ID") instance_id = Column(String(64), nullable=False, comment="流程实例ID") node_key = Column(String(64), nullable=True, comment="当前节点key") assignee_user_id = Column(String(64), nullable=True, comment="待办人") status = Column(String(32), nullable=True, comment="pending/approved/rejected 等") comment_text = Column(String(512), 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="删除标记:0-正常 1-已删除") # ============================================================================= # 细胞存储 — 采集协议单(biz_collection_protocol / audit / payment) # ============================================================================= class BizCollectionProtocol(Base): """采集协议单 biz_collection_protocol""" __tablename__ = "biz_collection_protocol" id = Column(String(64), primary_key=True, comment="主键ID") protocol_no_id = Column(String(64), nullable=True, comment="采集协议号表ID") protocol_no = Column(String(32), nullable=False, comment="采集协议号展示") protocol_status = Column(String(16), nullable=False, default="dsx", comment="协议状态") protocol_attachments = Column(String(4000), nullable=True, comment="协议附件") register_date = Column(CHAR(8), nullable=True, comment="登记日期YYYYMMDD") effective_time = Column(DateTime, nullable=True, comment="协议生效时间") effective_desc = Column(String(512), nullable=True, comment="协议生效描述") expire_time = Column(DateTime, nullable=True, comment="协议过期时间") expire_desc = Column(String(512), nullable=True, comment="协议过期描述") void_time = Column(DateTime, nullable=True, comment="协议作废时间") void_desc = Column(String(512), nullable=True, comment="协议作废描述") to_research_time = Column(DateTime, nullable=True, comment="协议转科研时间") to_research_desc = Column(String(512), nullable=True, comment="协议转科研描述") collector_user_id = Column(String(64), nullable=True, comment="采集专员用户ID") 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 BizProtocolAudit(Base): """采集协议单-审核记录 biz_protocol_audit""" __tablename__ = "biz_protocol_audit" id = Column(String(64), primary_key=True, comment="主键ID") collection_protocol_id = Column(String(64), nullable=False, comment="采集协议单ID") auditor_user_id = Column(String(64), nullable=True, comment="审核人") audit_remark = Column(String(1000), nullable=True, comment="审核备注") audit_status = Column(String(16), nullable=False, comment="审核状态 shtg/shth") 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 BizProtocolPayment(Base): """采集协议单-缴费主表 biz_protocol_payment""" __tablename__ = "biz_protocol_payment" id = Column(String(64), primary_key=True, comment="主键ID") collection_protocol_id = Column(String(64), nullable=False, comment="采集协议单ID") pay_mode = Column(String(8), nullable=False, comment="dj趸交 fq分期") contract_amount = Column(Numeric(18, 2), nullable=True, comment="合同金额") installment_count = Column(Integer, nullable=True, comment="分期期数") installment_interval_months = Column(Integer, nullable=True, comment="每期间隔(月)") lump_sum_deadline = Column(CHAR(8), nullable=True, comment="趸交截止时间YYYYMMDD") installment_start_date = Column(CHAR(8), nullable=True, comment="分期开始YYYYMMDD") 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 BizProtocolPaymentDetail(Base): """采集协议单-缴费明细 biz_protocol_payment_detail""" __tablename__ = "biz_protocol_payment_detail" id = Column(String(64), primary_key=True, comment="主键ID") payment_id = Column(String(64), nullable=False, comment="缴费主表ID") transfer_type = Column(String(16), nullable=True, comment="转账方式") due_amount = Column(Numeric(18, 2), nullable=True, comment="应缴费金额") transfer_amount = Column(Numeric(18, 2), nullable=True, comment="转账金额") transfer_time = Column(DateTime, nullable=True, comment="转账时间") transfer_attachments = Column(Text, nullable=True, comment="转账附件") finance_confirm_attachments = Column(Text, nullable=True, comment="缴费财务确认附件") finance_remark = Column(String(512), nullable=True, comment="缴费财务确认备注") refund_finance_confirm_attachments = Column(Text, nullable=True, comment="财务退费确认附件") refund_finance_remark = Column(String(512), nullable=True, comment="财务退费确认备注") pay_status = Column(String(32), nullable=False, default="dfj", comment="缴费状态") installment_no = Column(Integer, nullable=True, comment="分期期序号") installment_due_date = Column(CHAR(8), nullable=True, comment="分期应缴日期YYYYMMDD") refund_amount = Column(Numeric(18, 2), nullable=True, comment="退费金额") refund_remark = Column(String(512), nullable=True, comment="退费备注") refund_attachments = Column(Text, 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 BizProtocolPartyCustomer(Base): """采集协议单-当事人客户信息 biz_protocol_party_customer""" __tablename__ = "biz_protocol_party_customer" id = Column(String(64), primary_key=True, comment="主键ID") collection_protocol_id = Column(String(64), nullable=False, comment="采集协议单ID") customer_id = Column(String(64), nullable=True, comment="客户ID") mother_name = Column(String(100), nullable=True, comment="母亲姓名") mother_phone = Column(String(32), nullable=True, comment="母亲电话") mother_id_card = Column(String(32), nullable=True, comment="母亲身份证号") mother_birth_ym = Column(CHAR(6), nullable=True, comment="母亲出生年月YYYYMM") mother_ethnic = Column(String(32), nullable=True, comment="母亲民族") mother_address = Column(String(512), nullable=True, comment="母亲地址") father_name = Column(String(100), nullable=True, comment="父亲姓名") father_phone = Column(String(32), nullable=True, comment="父亲电话") father_id_card = Column(String(32), nullable=True, comment="父亲身份证号") newborn_name = Column(String(100), nullable=True, comment="新生儿姓名") newborn_id_card = Column(String(32), nullable=True, comment="新生儿身份证号") newborn_delivery_time = Column(DateTime, nullable=True, comment="新生儿分娩时间") newborn_sex = Column(CHAR(1), nullable=True, comment="新生儿性别") delivery_mode = Column(String(16), nullable=True, comment="分娩方式") birth_order = Column(Integer, nullable=True, comment="出生顺序") newborn_weight_gram = Column(Integer, nullable=True, comment="新生儿体重(克)") apgar_1min = Column(Numeric(4, 1), nullable=True, comment="Apgar 1分钟评分") apgar_5min = Column(Numeric(4, 1), nullable=True, comment="Apgar 5分钟评分") collector_user_id = Column(String(64), nullable=True, comment="采集专员用户ID") 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 BizProtocolCollectionInfo(Base): """采集协议单-采集信息 biz_protocol_collection_info""" __tablename__ = "biz_protocol_collection_info" id = Column(String(64), primary_key=True, comment="主键ID") collection_protocol_id = Column(String(64), nullable=False, comment="采集协议单ID") region_id = Column(String(64), nullable=True, comment="区域ID") hospital_id = Column(String(64), nullable=True, comment="医院ID") medical_staff = Column(String(200), nullable=True, comment="医护人员") sales_user_id = Column(String(64), nullable=True, comment="销售人员用户ID") sample_collect_time = Column(DateTime, nullable=True, comment="样本采集时间") maternal_blood_collect_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 BizProtocolSample(Base): """采集协议单-样本信息 biz_protocol_sample""" __tablename__ = "biz_protocol_sample" id = Column(String(64), primary_key=True, comment="主键ID") collection_protocol_id = Column(String(64), nullable=False, comment="采集协议单ID") sample_type_id = Column(String(64), nullable=True, comment="样本类型ID") sample_code_id = Column(String(64), nullable=True, comment="样本编码ID") sample_code = Column(String(32), nullable=True, comment="样本编码") collect_amount = Column(Numeric(18, 4), nullable=True, comment="采集量") unit_id = Column(String(64), nullable=True, comment="单位ID") price = Column(Numeric(18, 2), nullable=True, comment="价格") storage_years = Column(Integer, nullable=True, comment="存储年限") sample_status = Column(String(16), nullable=True, comment="样本状态") storage_in_date = Column(CHAR(8), nullable=True, comment="入库日期YYYYMMDD") detect_start_date = Column(CHAR(8), nullable=True, comment="检测开始日期YYYYMMDD") void_date = Column(CHAR(8), nullable=True, comment="作废日期YYYYMMDD") storage_expire_date = Column(CHAR(8), nullable=True, comment="存储到期日期YYYYMMDD") 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 BizProtocolSampleTransport(Base): """采集协议单-样本运输 biz_protocol_sample_transport""" __tablename__ = "biz_protocol_sample_transport" id = Column(String(64), primary_key=True, comment="主键ID") collection_protocol_id = Column(String(64), nullable=False, comment="采集协议单ID") sample_id = Column(String(64), nullable=False, comment="样本ID") transport_type = Column(String(16), nullable=False, comment="kdys快递运输 ryxd人员携带") express_company_id = Column(String(64), nullable=True, comment="快递公司ID") waybill_no = Column(String(128), nullable=True, comment="快递单号") dest_site_id = Column(String(64), nullable=True, comment="目的站点ID") express_fee = Column(Numeric(18, 2), nullable=True, comment="快递费用(元)") eta_time = Column(DateTime, nullable=True, comment="预计到达时间") carrier_name = Column(String(100), nullable=True, comment="携带人员姓名") carrier_phone = 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 BizAttachment(Base): """业务附件 biz_attachment""" __tablename__ = "biz_attachment" id = Column(String(64), primary_key=True, comment="主键ID") business_type = Column(String(50), nullable=True, comment="业务类型") business_id = Column(String(64), nullable=True, comment="业务主键ID") original_name = Column(String(200), nullable=False, comment="原始文件名") file_ext = Column(String(20), nullable=True, comment="文件后缀名") file_url = Column(String(500), nullable=False, comment="MinIO路径后缀") file_size = Column(Integer, nullable=True, comment="文件大小(字节)") file_type = Column(String(50), nullable=True, comment="MIME类型") 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 BizProtocolStorageCert(Base): """采集协议单-储存证书 biz_protocol_storage_cert""" __tablename__ = "biz_protocol_storage_cert" id = Column(String(64), primary_key=True, comment="主键ID") collection_protocol_id = Column(String(64), nullable=False, comment="采集协议单ID") make_status = Column(CHAR(1), nullable=True, default="0", comment="制作状态 0-未制作 1-已制作") cert_image_urls = Column(String(4000), nullable=True, comment="证书图片URLs") make_date = Column(CHAR(8), nullable=True, comment="制作日期YYYYMMDD") 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="删除标记") # ============================================================================= # V0.4 运营支撑(2.4 洁净室管理 / 库位管理 / 展馆预约) # ============================================================================= class BizCleanRoom(Base): """洁净室 biz_clean_room""" __tablename__ = "biz_clean_room" id = Column(String(64), primary_key=True, comment="主键ID") room_code = Column(String(64), nullable=False, comment="编号") room_name = Column(String(200), nullable=False, comment="名称") room_grade = Column(String(8), nullable=True, comment="等级 A/B/C/D") room_status = Column(String(16), nullable=False, default="zc", comment="zc正常 yc异常") area_sqm = Column(Numeric(12, 2), nullable=True, comment="面积m²") 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 BizCleanRoomAccessLog(Base): """洁净室出入记录 biz_clean_room_access_log""" __tablename__ = "biz_clean_room_access_log" id = Column(String(64), primary_key=True, comment="主键ID") clean_room_id = Column(String(64), nullable=False, comment="洁净室ID") user_id = Column(String(64), nullable=True, comment="人员用户ID") person_name = Column(String(100), nullable=True, comment="人员姓名(冗余)") dept_name = Column(String(200), nullable=True, comment="部门") enter_time = Column(DateTime, nullable=False, comment="进入时间") purpose = Column(String(512), nullable=True, comment="目的") leave_time = Column(DateTime, nullable=True, comment="离开时间") body_temp = 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 BizStorageFacility(Base): """存储设施树 biz_storage_facility""" __tablename__ = "biz_storage_facility" id = Column(String(64), primary_key=True, comment="主键ID") parent_id = Column(String(64), nullable=False, default="0", comment="父节点ID,0根") node_name = Column(String(200), nullable=False, comment="节点名称(罐/层/盒等)") node_type = Column(String(32), nullable=True, comment="facility/layer/box 等扩展") is_leaf = Column(SmallInteger, nullable=False, default=0, comment="是否叶子存储位 1是") 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 BizStorageFacilitySlot(Base): """存储设施小格 biz_storage_facility_slot""" __tablename__ = "biz_storage_facility_slot" id = Column(String(64), primary_key=True, comment="主键ID") facility_node_id = Column(String(64), nullable=False, comment="设施树叶子节点ID") slot_code = Column(String(64), nullable=True, comment="小格编码/坐标") slot_status = Column(String(16), 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 BizExhibitionAppointment(Base): """展馆预约 biz_exhibition_appointment""" __tablename__ = "biz_exhibition_appointment" id = Column(String(64), primary_key=True, comment="主键ID") appointment_no = Column(String(64), nullable=False, comment="预约编号") visit_org = Column(String(200), nullable=True, comment="来访单位") contact_name = Column(String(100), nullable=True, comment="联系人") visit_date = Column(DateTime, nullable=True, comment="到访日期") visitor_count = Column(Integer, nullable=True, comment="人数") reception_user_id = Column(String(64), nullable=True, comment="接待人员用户ID") 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="删除标记")