# -*- coding: utf-8 -*-

from sqlalchemy import DateTime, Integer, Text, String
from sqlalchemy.orm import Mapped, mapped_column

from app.core.base_model import ModelMixin, UserMixin


class BizMecModel(ModelMixin):
    """
    机构信息表
    """
    __tablename__: str = 'biz_mec'
    __table_args__: dict[str, str] = {'comment': '机构信息'}
    __loader_options__: list[str] = ["created_by", "updated_by"]

    crane_no: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='起重机编号 ')
    mec_no: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='机构编号 ')
    mec_category: Mapped[str | None] = mapped_column(String(10), nullable=True, comment='机构分类 MecCategory')
    mec_type: Mapped[str | None] = mapped_column(String(10), nullable=True, comment='机构类型 MecType')
    hoist_weight: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='起升重量 起升机构')
    hoist_height: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='起升高度 起升机构')
    hoist_speed: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='起升速度 起升机构')
    rope_count: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='钢线绳受力根数 起升机构')
    rope_max_pull: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='钢丝绳最大拉力 起升机构')
    rope_diameter: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='钢丝绳直径 起升机构')
    rope_model: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='钢丝绳型号 起升机构')
    car_speed: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='速度 平移机构')
    wheel_span: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='轮距 平移机构')
    track_span: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='轨距 平移机构')
    wheel_pressure: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='轮压 平移机构')
    track_model: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='轨道型号 平移机构')
    track_diameter: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='车轨直径 平移机构')
    track_count: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='车轨数量 平移机构')
    word_system: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='工作制度 ')
    reducer_model: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='减速机型号 ')
    reducer_trans_ratio: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='减速机传动比 ')
    reducer_total_trans_ratio: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='减速机总传动比 ')
    motor_model: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='电机型号 ')
    motor_voltage: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='电机额定电压 ')
    motor_current: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='电机额定电流 ')
    motor_power: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='电机额定功率 ')
    motor_speed: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='电机转速 ')
    motor_count: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='电机数量 ')
    bradk_model: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='制动器型号 ')
    brake_torque: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='制动器制动力矩 ')
    brake_wheel_diameter: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='制动器轮径 ')
    brake_count: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='制动器数量 ')
    sort: Mapped[int | None] = mapped_column(Integer, nullable=True, comment='排序 ')
    hoist_weight_var_code: Mapped[str | None] = mapped_column(String(200), nullable=True, comment='重量关联变量')
    stroke_var_code: Mapped[str | None] = mapped_column(String(50), nullable=True, comment='行程高度变量')
    is_canvas_show: Mapped[str | None] = mapped_column(String(10), nullable=True, comment='是否首页动画展示')
    is_canvas_move: Mapped[str | None] = mapped_column(String(10), nullable=True, comment='是否启用动画')
    gear_select_var_codes: Mapped[str | None] = mapped_column(String(255), nullable=True, comment='机构选择变量')
    vib_gear_value: Mapped[int | None] = mapped_column(Integer, nullable=True, comment='振动分析挡位')

