Files
Feeding_control_system/busisness/models.py

348 lines
7.4 KiB
Python
Raw Normal View History

2025-10-31 14:30:42 +08:00
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
#管片副标识1
ArtifactIDVice1: str
#产品环号
ProduceRingNumber: int
#模具编号
MouldCode: str
#骨架ID
SkeletonID: str
#环类型编码
RingTypeCode: str
#尺寸规格
SizeSpecification: str
#埋深
BuriedDepth: str
#块号
BlockNumber: str
#环号标记
HoleRingMarking: str
#出管标记
GroutingPipeMarking: str
#聚丙烯纤维标记
PolypropyleneFiberMarking: str
# 浇筑方量
BetonVolume: float
# 任务单号(混凝土)
BetonTaskID: str
@dataclass
class ArtifactInfoModel:
def __init__(self):
pass
"""管片表模型"""
ID: int
#管片编号
ArtifactID: str
#管片ID
ArtifactActionID: int
#管片副标识1
ArtifactIDVice1: str
#产品环号
ProduceRingNumber: int
#模具编号
MouldCode: str
#骨架ID
SkeletonID: str
#环类型编码
RingTypeCode: str
#尺寸规格
SizeSpecification: str
#埋深
BuriedDepth: str
#块号
BlockNumber: str
#环号标记
HoleRingMarking: str
#出管标记
GroutingPipeMarking: str
#聚丙烯纤维标记
PolypropyleneFiberMarking: str
# 浇筑方量
BetonVolume: float
# 任务单号
BetonTaskID: str
#FK_PDID
FK_PDID: int=0
#状态
Status: int=1
#开始时间
BeginTime: str=""
#结束时间
EndTime: str=""
#PStatus
PStatus: int=0
#Source
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
#任务单状态文本
TaskStatusText: str
#计划生产数量
TaskCount: int
#已生产数量
AlreadyProduceCount: int
#生产进度
Progress: str
#工程名称
ProjectName: str
#计划生产日期
TaskPlanDateText: str
#强度等级
BetonGrade: str
#设计配合比编号
MixID: str
#生产配合比编号
ProduceMixID: str
#计划方量
PlannedVolume: float
#已供方量
ProducedVolume: float
#出洞环标记
HoleRingMarking: str
#注浆管标记
GroutingPipeMarking: str
#聚丙烯纤维标记
PolypropyleneFiberMarking: str
#生产日期
TaskDateText: str
#盘数
PlateCount: int
#任务单下发状态
SendStatus: int
#任务单下发状态
SendStatusText: str
#配合比下发状态
MixSendStatus: int
#配合比下发状态
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
#派单编号
PDCode: str
#任务单号
TaskID: int
#工程名称
ProjectName: str
#生产配合比编号
ProduceMixID: str
#车架号
VinNo: str
#派单方量
BetonVolume: float
#模具编号
MouldCode: str
#骨架编号
SkeletonID: str
#环类型编码
RingTypeCode: str
#尺寸规格
SizeSpecification: str
#埋深
BuriedDepth: str
#块号
BlockNumber: str
# 派单模式(1自动派单 2手动派单0未知
Mode: int=0
# 派单状态1计划中2已下发0未知)默认1
Status: int=1
#搅拌生产状态()
GStatus: int=0
#数据来源(1 api 2离线)
Source: int=1
#创建时间
CreateTime: str=""
#派单时间(下发)
OptTime: str=""
2025-11-21 14:55:52 +08:00
@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