from typing import Optional, List, Dict from pydantic import BaseModel, Field class PDIPLTMCreate(BaseModel): coilid: str = Field(..., min_length=12, max_length=12, description="钢卷号,必须为12位") rollprogramnb: Optional[int] = None sequencenb: Optional[int] = None schedule_code: Optional[str] = None entry_coil_thickness: Optional[float] = None entry_coil_thickness_max: Optional[float] = None entry_coil_thickness_min: Optional[float] = None entry_coil_width: Optional[float] = None entry_coil_width_max: Optional[float] = None entry_coil_width_min: Optional[float] = None entry_coil_weight: Optional[float] = None entry_of_coil_length: Optional[float] = None entry_of_coil_inner_diameter: Optional[float] = None entry_of_coil_outer_diameter: Optional[float] = None trimming: Optional[int] = None trimming_width: Optional[float] = None smp_length: Optional[float] = None smp_num: Optional[float] = None smp_frq: Optional[str] = None preceding_process_code: Optional[str] = None next_process_code: Optional[str] = None hot_mill_delivery_temp: Optional[float] = None finished_coil_temp: Optional[float] = None crown_average: Optional[float] = None coil_flatness_average: Optional[float] = None coil_flatness_max_value: Optional[float] = None coil_flatness_min_value: Optional[float] = None material_yield_point: Optional[float] = None material_tensile: Optional[float] = None hotactfmwedgeavg: Optional[float] = None weight_mode: Optional[str] = None dummy_coil_mrk: Optional[str] = None cut_mode: Optional[str] = None off_gauge_head_length: Optional[float] = None off_gauge_tail_length: Optional[float] = None exit_coil_no: Optional[str] = None exit_coil_weight: Optional[float] = None exit_coil_weight_max: Optional[float] = None exit_coil_weight_min: Optional[float] = None exit_coil_thickness: Optional[float] = None exit_coil_thickness_max: Optional[float] = None exit_coil_thickness_min: Optional[float] = None exit_coil_width: Optional[float] = None exit_coil_width_max: Optional[float] = None exit_coil_width_min: Optional[float] = None work_order_no: Optional[str] = None order_quality: Optional[str] = None steel_grade: Optional[str] = None sg_sign: Optional[str] = None order_thickness: Optional[float] = None order_thickness_max: Optional[float] = None order_thickness_min: Optional[float] = None order_width: Optional[float] = None order_width_max: Optional[float] = None order_width_min: Optional[float] = None sleeve_code_of_cold_coil: Optional[str] = None packing_type_code: Optional[str] = None thk_ds: Optional[str] = None ext_num_01: Optional[str] = None # chemical elements c: Optional[float] = None si: Optional[float] = None mn: Optional[float] = None p: Optional[float] = None s: Optional[float] = None cu: Optional[float] = None ni: Optional[float] = None cr: Optional[float] = None mo: Optional[float] = None v: Optional[float] = None ti: Optional[float] = None sol_al: Optional[float] = None fe: Optional[float] = None nb: Optional[float] = None n: Optional[float] = None b: Optional[float] = None send_flag: Optional[str] = None work_order_no: Optional[str] = None coiler_diameter: Optional[int] = None l2_grade: Optional[str] = None scrap_cut_head_len: Optional[float] = None scrap_cut_tail_len: Optional[float] = None meterweight: Optional[float] = None meter_d_outside: Optional[float] = None meter_width: Optional[float] = None uncoiler_tension: Optional[float] = None looper_tension_1: Optional[float] = None pl_tension: Optional[float] = None looper_tension_2: Optional[float] = None looper_tension_3: Optional[float] = None class PDIPLTMUpdate(BaseModel): rollprogramnb: Optional[int] = None sequencenb: Optional[int] = None schedule_code: Optional[str] = None entry_coil_thickness: Optional[float] = None entry_coil_thickness_max: Optional[float] = None entry_coil_thickness_min: Optional[float] = None entry_coil_width: Optional[float] = None entry_coil_width_max: Optional[float] = None entry_coil_width_min: Optional[float] = None entry_coil_weight: Optional[float] = None entry_of_coil_length: Optional[float] = None entry_of_coil_inner_diameter: Optional[float] = None entry_of_coil_outer_diameter: Optional[float] = None trimming: Optional[int] = None trimming_width: Optional[float] = None smp_length: Optional[float] = None smp_num: Optional[float] = None smp_frq: Optional[str] = None preceding_process_code: Optional[str] = None next_process_code: Optional[str] = None hot_mill_delivery_temp: Optional[float] = None finished_coil_temp: Optional[float] = None crown_average: Optional[float] = None coil_flatness_average: Optional[float] = None material_yield_point: Optional[float] = None material_tensile: Optional[float] = None weight_mode: Optional[str] = None dummy_coil_mrk: Optional[str] = None cut_mode: Optional[str] = None off_gauge_head_length: Optional[float] = None off_gauge_tail_length: Optional[float] = None exit_coil_no: Optional[str] = None exit_coil_weight: Optional[float] = None exit_coil_weight_max: Optional[float] = None exit_coil_weight_min: Optional[float] = None exit_coil_thickness: Optional[float] = None exit_coil_thickness_max: Optional[float] = None exit_coil_thickness_min: Optional[float] = None exit_coil_width: Optional[float] = None exit_coil_width_max: Optional[float] = None exit_coil_width_min: Optional[float] = None work_order_no: Optional[str] = None order_quality: Optional[str] = None steel_grade: Optional[str] = None sg_sign: Optional[str] = None order_thickness: Optional[float] = None order_thickness_max: Optional[float] = None order_thickness_min: Optional[float] = None order_width: Optional[float] = None order_width_max: Optional[float] = None order_width_min: Optional[float] = None packing_type_code: Optional[str] = None thk_ds: Optional[str] = None c: Optional[float] = None si: Optional[float] = None mn: Optional[float] = None p: Optional[float] = None s: Optional[float] = None cu: Optional[float] = None ni: Optional[float] = None cr: Optional[float] = None mo: Optional[float] = None v: Optional[float] = None ti: Optional[float] = None sol_al: Optional[float] = None nb: Optional[float] = None n: Optional[float] = None b: Optional[float] = None send_flag: Optional[str] = None coiler_diameter: Optional[int] = None l2_grade: Optional[str] = None uncoiler_tension: Optional[float] = None looper_tension_1: Optional[float] = None pl_tension: Optional[float] = None looper_tension_2: Optional[float] = None looper_tension_3: Optional[float] = None scrap_cut_head_len: Optional[float] = None scrap_cut_tail_len: Optional[float] = None meterweight: Optional[float] = None class OpcConfig(BaseModel): opc_url: str counter_node: str poll_interval: int = 2 trackmap_nodes: Dict[str, str] = {}