Files
Feeding_control_system/busisness/models.py

351 lines
8.0 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:
"""管片信息基础模型"""
2025-10-31 14:30:42 +08:00
#管片编号
ArtifactID: str = ""
2025-10-31 14:30:42 +08:00
#管片ID
ArtifactActionID: int = 0
2025-10-31 14:30:42 +08:00
#管片副标识1
ArtifactIDVice1: str = ""
2025-10-31 14:30:42 +08:00
#产品环号
ProduceRingNumber: int = 0
2025-10-31 14:30:42 +08:00
#模具编号
MouldCode: str = ""
2025-10-31 14:30:42 +08:00
#骨架ID
SkeletonID: str = ""
2025-10-31 14:30:42 +08:00
#环类型编码
RingTypeCode: str = ""
2025-10-31 14:30:42 +08:00
#尺寸规格
SizeSpecification: str = ""
2025-10-31 14:30:42 +08:00
#埋深
BuriedDepth: str = ""
2025-10-31 14:30:42 +08:00
#块号
BlockNumber: str = ""
2025-10-31 14:30:42 +08:00
#环号标记
HoleRingMarking: str = ""
2025-10-31 14:30:42 +08:00
#出管标记
GroutingPipeMarking: str = ""
2025-10-31 14:30:42 +08:00
#聚丙烯纤维标记
PolypropyleneFiberMarking: str = ""
2025-10-31 14:30:42 +08:00
# 浇筑方量
BetonVolume: float = 0.0
2025-10-31 14:30:42 +08:00
# 任务单号(混凝土)
BetonTaskID: str = ""
#接口中的字段
ProductionProcessCode: int = 0
2025-10-31 14:30:42 +08:00
@dataclass
class ArtifactInfoModel(ArtifactInfo):
2025-10-31 14:30:42 +08:00
"""管片表模型"""
# 继承基础模型的所有字段
ID: int = 0
2025-10-31 14:30:42 +08:00
#FK_PDID
FK_PDID: int = 0
2025-10-31 14:30:42 +08:00
#状态
Status: int = 1
2025-10-31 14:30:42 +08:00
#开始时间
BeginTime: str = ""
2025-10-31 14:30:42 +08:00
#结束时间
EndTime: str = ""
#生产中状态(1正常、2警告、3异常)
PStatus: int = 1
#数据来源(1 api 2离线RFID)
Source: int = 1
2025-10-31 14:30:42 +08:00
#FBetonVolume
FBetonVolume: float = 0.0
2025-10-31 14:30:42 +08:00
#OptTime
OptTime: str = ""
2025-10-31 14:30:42 +08:00
@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=""
2025-10-31 14:30:42 +08:00
#任务单状态
TaskStatus: int=0
2025-10-31 14:30:42 +08:00
#任务单状态文本
TaskStatusText: str=""
# #计划生产数量
# TaskCount: int=0
# #已生产数量
# AlreadyProduceCount: int=0
2025-10-31 14:30:42 +08:00
#生产进度
# Progress: str=""
2025-10-31 14:30:42 +08:00
#工程名称
ProjectName: str=""
2025-10-31 14:30:42 +08:00
#计划生产日期
# TaskPlanDateText: str=""
2025-10-31 14:30:42 +08:00
#强度等级
BetonGrade: str=""
2025-10-31 14:30:42 +08:00
#设计配合比编号
MixID: str=""
2025-10-31 14:30:42 +08:00
#生产配合比编号
ProduceMixID: str=""
# #计划方量
PlannedVolume: float=0.0
# #已供方量
# ProducedVolume: float=0.0
2025-10-31 14:30:42 +08:00
#出洞环标记
# HoleRingMarking: str=""
# #注浆管标记
# GroutingPipeMarking: str=""
# #聚丙烯纤维标记
# PolypropyleneFiberMarking: str=""
2025-10-31 14:30:42 +08:00
#生产日期
# TaskDateText: str=""
2025-10-31 14:30:42 +08:00
#盘数
# PlateCount: int=0
# #任务单下发状态
# SendStatus: int=0
# #任务单下发状态
# SendStatusText: str=""
# #配合比下发状态
# MixSendStatus: int=0
# #配合比下发状态
# MixSendStatusText: str=""
2025-10-31 14:30:42 +08:00
@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
2025-10-31 14:30:42 +08:00
"""管片表模型"""
ID: int=0
2025-10-31 14:30:42 +08:00
#派单编号
ArtifactID: str=""
ArtifactActionID: int=0
2025-10-31 14:30:42 +08:00
#任务单号
TaskID: str=""
2025-10-31 14:30:42 +08:00
#工程名称
ProjectName: str=""
2025-10-31 14:30:42 +08:00
#生产配合比编号
ProduceMixID: str=""
2025-10-31 14:30:42 +08:00
#派单方量
BetonVolume: float=0.0
#实际派单方量
FBetonVolume: float=0.0
#实际派单方量
PlannedVolume: float=0.0
#强度等级
BetonGrade: str=""
2025-10-31 14:30:42 +08:00
#模具编号
MouldCode: str=""
2025-10-31 14:30:42 +08:00
#骨架编号
SkeletonID: str=""
2025-10-31 14:30:42 +08:00
#环类型编码
RingTypeCode: str=""
2025-10-31 14:30:42 +08:00
#尺寸规格
SizeSpecification: str=""
2025-10-31 14:30:42 +08:00
#埋深
BuriedDepth: str=""
2025-10-31 14:30:42 +08:00
#块号
BlockNumber: str=""
2025-10-31 14:30:42 +08:00
# 派单模式(1自动派单 2手动派单0未知
Mode: int=0
2026-03-13 21:04:19 +08:00
# 派单状态1计划中2已下发0未知 3已超时 4未扫码))默认1
2025-10-31 14:30:42 +08:00
Status: int=1
2026-03-13 21:04:19 +08:00
#搅拌生产状态(搅拌生产状态(1未进行生产,2正在生产3生产完毕,4生产中断5已插入搅拌系统6已取消)
2025-10-31 14:30:42 +08:00
GStatus: int=0
#数据来源(1 api 2离线)
Source: int=1
#创建时间
CreateTime: str=""
#创建时间
EndTime: str=""
2025-10-31 14:30:42 +08:00
#派单时间(下发)
OptTime: str=""
2025-11-21 14:55:52 +08:00
2026-03-13 21:04:19 +08:00
@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=""
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
# 配方比例
2025-12-12 18:00:14 +08:00
FormulaProportion: str
# 白班拆模强度文本描述
DayStrengthValue: str
# 夜班拆模强度文本描述
NihtStrengthValue: str