361 lines
8.1 KiB
Python
361 lines
8.1 KiB
Python
from dataclasses import dataclass
|
||
from typing import Optional, Dict, Any, List
|
||
|
||
|
||
@dataclass
|
||
class LoginRequest:
|
||
"""登录请求模型"""
|
||
Program: int
|
||
SC: str
|
||
loginName: str
|
||
password: str
|
||
|
||
|
||
@dataclass
|
||
class LoginResponse:
|
||
"""登录响应模型"""
|
||
Code: int
|
||
Message: Optional[str]
|
||
Data: Optional[Dict[str, Any]]
|
||
|
||
@property
|
||
def app_id(self) -> Optional[str]:
|
||
"""获取AppID"""
|
||
return self.Data.get('AppID') if self.Data else None
|
||
|
||
@property
|
||
def expire_time(self) -> Optional[str]:
|
||
"""获取过期时间"""
|
||
return self.Data.get('ExpireTime') if self.Data else None
|
||
|
||
@property
|
||
def sign_token(self) -> Optional[str]:
|
||
"""获取SignToken"""
|
||
return self.Data.get('SignToken') if self.Data else None
|
||
|
||
@property
|
||
def zr_jwt(self) -> Optional[str]:
|
||
"""获取ZrJwt"""
|
||
return self.Data.get('ZrJwt') if self.Data else None
|
||
|
||
|
||
@dataclass
|
||
class ArtifactInfo:
|
||
"""管片信息基础模型"""
|
||
#管片编号
|
||
ArtifactID: str = ""
|
||
#管片ID
|
||
ArtifactActionID: int = 0
|
||
#管片副标识1
|
||
ArtifactIDVice1: str = ""
|
||
#产品环号
|
||
ProduceRingNumber: int = 0
|
||
#模具编号
|
||
MouldCode: str = ""
|
||
#骨架ID
|
||
SkeletonID: str = ""
|
||
#环类型编码
|
||
RingTypeCode: str = ""
|
||
#尺寸规格
|
||
SizeSpecification: str = ""
|
||
#埋深
|
||
BuriedDepth: str = ""
|
||
#块号
|
||
BlockNumber: str = ""
|
||
#环号标记
|
||
HoleRingMarking: str = ""
|
||
#出管标记
|
||
GroutingPipeMarking: str = ""
|
||
#聚丙烯纤维标记
|
||
PolypropyleneFiberMarking: str = ""
|
||
# 浇筑方量
|
||
BetonVolume: float = 0.0
|
||
# 任务单号(混凝土)
|
||
BetonTaskID: str = ""
|
||
#接口中的字段
|
||
ProductionProcessCode: int = 0
|
||
|
||
|
||
@dataclass
|
||
class ArtifactInfoModel(ArtifactInfo):
|
||
"""管片表模型"""
|
||
# 继承基础模型的所有字段
|
||
ID: int = 0
|
||
#FK_PDID
|
||
FK_PDID: int = 0
|
||
#状态
|
||
Status: int = 1
|
||
#开始时间
|
||
BeginTime: str = ""
|
||
#结束时间
|
||
EndTime: str = ""
|
||
#生产中状态(1正常、2警告、3异常)
|
||
PStatus: int = 1
|
||
#数据来源(1 api 2离线RFID)
|
||
Source: int = 1
|
||
#FBetonVolume
|
||
FBetonVolume: float = 0.0
|
||
#OptTime
|
||
OptTime: str = ""
|
||
|
||
|
||
@dataclass
|
||
class ArtifactResponse:
|
||
"""管片信息响应模型"""
|
||
Code: int
|
||
Message: Optional[str]
|
||
Data: Optional[ArtifactInfo]
|
||
|
||
@classmethod
|
||
def from_dict(cls, data: Dict[str, Any]) -> 'ArtifactResponse':
|
||
"""
|
||
从字典创建响应对象
|
||
|
||
Args:
|
||
data: 响应数据字典
|
||
|
||
Returns:
|
||
ArtifactResponse: 响应对象
|
||
"""
|
||
response_data = data.get('Data')
|
||
artifact_info = None
|
||
if response_data:
|
||
artifact_info = ArtifactInfo(**response_data)
|
||
|
||
return cls(
|
||
Code=data.get('Code'),
|
||
Message=data.get('Message'),
|
||
Data=artifact_info
|
||
)
|
||
|
||
|
||
@dataclass
|
||
class TaskInfo:
|
||
"""任务单信息模型"""
|
||
#任务单ID
|
||
TaskID: str=""
|
||
#任务单状态
|
||
TaskStatus: int=0
|
||
#任务单状态文本
|
||
TaskStatusText: str=""
|
||
# #计划生产数量
|
||
# TaskCount: int=0
|
||
# #已生产数量
|
||
# AlreadyProduceCount: int=0
|
||
#生产进度
|
||
# Progress: str=""
|
||
#工程名称
|
||
ProjectName: str=""
|
||
#计划生产日期
|
||
# TaskPlanDateText: str=""
|
||
#强度等级
|
||
BetonGrade: str=""
|
||
#设计配合比编号
|
||
MixID: str=""
|
||
#生产配合比编号
|
||
ProduceMixID: str=""
|
||
# #计划方量
|
||
PlannedVolume: float=0.0
|
||
# #已供方量
|
||
# ProducedVolume: float=0.0
|
||
#出洞环标记
|
||
# HoleRingMarking: str=""
|
||
# #注浆管标记
|
||
# GroutingPipeMarking: str=""
|
||
# #聚丙烯纤维标记
|
||
# PolypropyleneFiberMarking: str=""
|
||
#生产日期
|
||
# TaskDateText: str=""
|
||
#盘数
|
||
# PlateCount: int=0
|
||
# #任务单下发状态
|
||
# SendStatus: int=0
|
||
# #任务单下发状态
|
||
# SendStatusText: str=""
|
||
# #配合比下发状态
|
||
# MixSendStatus: int=0
|
||
# #配合比下发状态
|
||
# MixSendStatusText: str=""
|
||
|
||
|
||
@dataclass
|
||
class TaskResponse:
|
||
"""任务单响应模型"""
|
||
Code: int
|
||
Message: Optional[str]
|
||
Data: Optional[TaskInfo]
|
||
|
||
@classmethod
|
||
def from_dict(cls, data: Dict[str, Any]) -> 'TaskResponse':
|
||
"""
|
||
从字典创建响应对象
|
||
|
||
Args:
|
||
data: 响应数据字典
|
||
|
||
Returns:
|
||
TaskResponse: 响应对象
|
||
"""
|
||
response_data = data.get('Data')
|
||
task_info = None
|
||
if response_data:
|
||
task_info = TaskInfo(**response_data)
|
||
|
||
return cls(
|
||
Code=data.get('Code'),
|
||
Message=data.get('Message'),
|
||
Data=task_info
|
||
)
|
||
|
||
|
||
@dataclass
|
||
class NotPourArtifactResponse:
|
||
"""未浇筑管片列表响应模型"""
|
||
Code: int
|
||
Message: Optional[str]
|
||
Data: Optional[List[ArtifactInfo]]
|
||
|
||
@classmethod
|
||
def from_dict(cls, data: Dict[str, Any]) -> 'NotPourArtifactResponse':
|
||
"""
|
||
从字典创建响应对象
|
||
|
||
Args:
|
||
data: 响应数据字典
|
||
|
||
Returns:
|
||
NotPourArtifactResponse: 响应对象
|
||
"""
|
||
response_data = data.get('Data')
|
||
artifacts = None
|
||
if response_data:
|
||
artifacts = [ArtifactInfo(**item) for item in response_data]
|
||
|
||
return cls(
|
||
Code=data.get('Code'),
|
||
Message=data.get('Message'),
|
||
Data=artifacts
|
||
)
|
||
|
||
|
||
@dataclass
|
||
class PDRecordModel:
|
||
# def __init__(self):
|
||
# pass
|
||
"""管片表模型"""
|
||
ID: int=0
|
||
#派单编号
|
||
ArtifactID: str=""
|
||
|
||
ArtifactActionID: int=0
|
||
#任务单号
|
||
TaskID: str=""
|
||
#工程名称
|
||
ProjectName: str=""
|
||
#生产配合比编号
|
||
ProduceMixID: str=""
|
||
#设计方量
|
||
BetonVolume: float=0.0
|
||
#计划派单方量
|
||
BetonVolume2: float=0.0
|
||
#修改后的方量
|
||
BetonVolumeUpd: float=0.0
|
||
#实际派单方量
|
||
FBetonVolume: float=0.0
|
||
#实际派单方量
|
||
PlannedVolume: float=0.0
|
||
#强度等级
|
||
BetonGrade: str=""
|
||
#模具编号
|
||
MouldCode: str=""
|
||
#骨架编号
|
||
SkeletonID: str=""
|
||
#环类型编码
|
||
RingTypeCode: str=""
|
||
#尺寸规格
|
||
SizeSpecification: str=""
|
||
#埋深
|
||
BuriedDepth: str=""
|
||
#块号
|
||
BlockNumber: str=""
|
||
# 派单模式(1自动派单 2手动派单0未知 )
|
||
Mode: int=0
|
||
# 派单状态((1计划中2已下发0未知 3已超时 4未扫码)),默认1
|
||
Status: int=1
|
||
#搅拌生产状态(搅拌生产状态(1未进行生产,2正在生产3生产完毕,4生产中断5已插入搅拌系统6已取消)
|
||
GStatus: int=0
|
||
#数据来源(1 api 2离线)
|
||
Source: int=1
|
||
#创建时间
|
||
CreateTime: str=""
|
||
#创建时间
|
||
EndTime: str=""
|
||
#派单时间(下发)
|
||
OptTime: str=""
|
||
#扫描时间
|
||
ScanTime: str=""
|
||
#ErpID
|
||
ErpID: str=""
|
||
|
||
|
||
|
||
@dataclass
|
||
class FreqRecordModel:
|
||
"""频率记录"""
|
||
ID: int=0
|
||
#模具编号
|
||
ArtifactID: str=""
|
||
#模具ID
|
||
ArtifactActionID: int=0
|
||
#模具编号
|
||
MouldCode: str=""
|
||
#骨架编号
|
||
Freq: float=0.0
|
||
#是否已同步 0否 1是
|
||
IsSync: int=0
|
||
#记录时间
|
||
OptTime: str=""
|
||
|
||
|
||
@dataclass
|
||
class LEDInfo:
|
||
"""LED信息模型"""
|
||
# 任务单号
|
||
TaskID: str
|
||
# 盘方量
|
||
PlateVolume: str
|
||
# 模具编号
|
||
MouldCode: str
|
||
# 生产投料时间
|
||
ProduceStartTime: str
|
||
# 管片编号
|
||
ArtifactID: str
|
||
# 环类型编码(无)
|
||
RingTypeCode: str
|
||
# 累计盘次
|
||
PlateIDSerial: str
|
||
# 检验结果
|
||
CheckResult: str
|
||
# 高斗称值(无)
|
||
UpperWeight:float
|
||
# 砼出料温度温度
|
||
Temper: str
|
||
# 车间温度
|
||
WorkshopTemperature: str
|
||
# 低桶称量值
|
||
LowBucketWeighingValue: str
|
||
# 振动频率
|
||
VibrationFrequency: str
|
||
# 总计量
|
||
TotMete: str
|
||
# 已浇筑方量
|
||
BetonVolumeAlready: str
|
||
# 水温
|
||
WaterTemperature: str
|
||
# 配方比例
|
||
FormulaProportion: str
|
||
# 白班拆模强度文本描述
|
||
DayStrengthValue: str
|
||
# 夜班拆模强度文本描述
|
||
NihtStrengthValue: str
|